Titanium бере ваш код Javascript, аналізує та попередньо обробляє його, а потім попередньо компілює в набір символів, які вирішуються на основі використання ваших програм Titanium API. З цієї ієрархії символів ми можемо створити матрицю залежностей символів, яка відображається на базових символах бібліотеки Titanium, щоб зрозуміти, які API (і пов'язані із ними залежності, фреймворки тощо) потрібні саме вашому додатку. Я використовую слово символ напівзагально, оскільки воно дещо відрізняється залежно від мови. В iPhone символ відображається на справжній символ C, що в кінцевому підсумку відображається на скомпільований файл .o, скомпільований для архітектур ARM / i386. Для Java це більш-менш файл .class і т. Д. Як тільки інтерфейс може зрозуміти вашу матрицю залежностей, ми тоді викликаємо компілятор SDK (тобто GCC для iPhone,
Отже, простий спосіб подумати про це - це те, що ваш код JS компілюється майже один до одного у репрезентативні символи у рідній країні. Все ще існує інтерпретатор, що працює в інтерпретованому режимі, інакше такі речі, як динамічний код, не працюватимуть. Однак він набагато швидший, набагато компактніший, і він приблизно такий же близький до чистого власного картографування, наскільки це можливо.
Очевидно, у нас ще є достатньо місця для покращення цього та роботи над цим. Наразі в нашому останньому тестуванні 1.0 він майже не відрізняється від того самого прямого коду об’єкт-с (оскільки в більшості випадків він точно зіставлений з цим). З точки зору CompSci, тепер ми можемо почати оптимізувати те, що людині насправді не вдалося зробити це, подібно до того, як компілятор GCC робить це вже сьогодні.