Ответ 1
Titanium берет ваш Javascript код, анализирует и препроцессирует его, а затем предварительно компилирует его в набор символов, которые разрешены на основе использования приложений Titanium API. Из этой символической иерархии мы можем построить матрицу зависимостей символов, которая сопоставляется с базовыми символами библиотеки Титанов, чтобы понять, какие API (и связанные с ними зависимости, фреймворки и т.д.), В частности, ваши приложения. Я использую символ слова в полу-общем виде, поскольку он немного отличается от языка. В iPhone символ сопоставляется с истинным символом C, который в конечном итоге сопоставляется с скомпилированным .o файлом, который был скомпилирован для архитектур ARM/i386. Для Java, ну, это более или менее файл .class и т.д. После того как внешний интерфейс может понять вашу матрицу зависимостей, мы затем вызываем компилятор SDK (например, GCC для iPhone, Java для Android), чтобы затем скомпилировать ваше приложение в финальную родной двоичный код.
Итак, простой способ подумать о том, что ваш JS-код скомпилирован почти один к одному в типичные символы в nativeland. Там все еще интерпретатор работает в интерпретируемом режиме, иначе такие вещи, как динамический код, не будут работать. Тем не менее, его гораздо быстрее, гораздо компактнее, и он примерно так же близок к чистому натурному картографированию, как вы можете получить.
У нас, очевидно, все еще есть много возможностей, чтобы улучшить это и работать над этим. До сих пор в нашем последнем тестировании 1.0 он почти неотличим от того же самого objective-c прямого кода (поскольку в большинстве случаев он точно сопоставлен с этим). С точки зрения CompSci, мы можем теперь начать оптимизировать вещи, которые человек действительно не мог легко сделать, - как и компилятор GCC уже сегодня.