Titanium pobiera kod Javascript, analizuje go i przetwarza wstępnie, a następnie wstępnie kompiluje do zestawu symboli, które są rozpoznawane w oparciu o wykorzystanie przez aplikacje interfejsów Titanium API. Na podstawie tej hierarchii symboli możemy zbudować macierz zależności symboli, która jest mapowana na podstawowe symbole biblioteki Titanium, aby zrozumieć, które interfejsy API (i powiązane zależności, struktury itp.) Są potrzebne konkretnie dla Twojej aplikacji. Używam tego słowa w sposób półgeneryczny, ponieważ różni się on nieco w zależności od języka. W iPhonie symbol jest odwzorowywany na prawdziwy symbol C, który ostatecznie jest mapowany na skompilowany plik .o, który został skompilowany dla architektur ARM / i386. W przypadku Javy jest to mniej więcej plik .class itd. Gdy front-end zrozumie macierz zależności, wywołujemy kompilator SDK (np. GCC dla iPhone'a,
Tak więc, prosty sposób, aby o tym pomyśleć jest taki, że twój kod JS jest skompilowany prawie jeden do jednego w reprezentatywne symbole w ojczyźnie. Wciąż istnieje interpreter działający w trybie interpretowanym, w przeciwnym razie rzeczy takie jak kod dynamiczny nie będą działać. Jednak jest znacznie szybszy, bardziej kompaktowy i jest tak zbliżony do czystego mapowania natywnego, jak tylko możesz.
Oczywiście nadal mamy dużo miejsca, aby to poprawić i nad tym pracować. Jak dotąd, w naszych ostatnich testach 1.0, jest prawie nie do odróżnienia od tego samego bezpośredniego kodu celu-c (ponieważ w większości przypadków jest dokładnie odwzorowany na to). Z punktu widzenia CompSci, możemy jednak teraz zacząć optymalizować rzeczy, których człowiek naprawdę nie byłby w stanie łatwo zrobić - podobnie jak kompilator GCC już dziś.