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