Как работает Appcelerator Titanium Mobile? - PullRequest
78 голосов
/ 15 марта 2010

Я работаю над созданием приложения для iPhone с Titanium Mobile 1.0 и вижу, что оно компилируется в двоичный файл iPhone. Как это работает? Похоже, что для анализа кода JavaScript и выполнения прямого перевода на Objective-C потребовалось бы немало усилий, не имея расширенного языка, такого как Objective-J 280 North и капучино.

Ответы [ 3 ]

147 голосов
/ 18 марта 2010

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

Итак, простой способ думать об этом - это то, что ваш JS-код скомпилирован почти один в один в репрезентативные символы на родной земле. По-прежнему работает интерпретатор в интерпретируемом режиме, иначе такие вещи, как динамический код, не будут работать. Тем не менее, он намного быстрее, гораздо более компактен и настолько близок к чистому нативному отображению, насколько это возможно.

У нас, очевидно, еще есть много возможностей, чтобы улучшить это и работать над этим. До сих пор в нашем последнем тестировании 1.0 он почти не отличался от того же прямого кода Objective-C (поскольку в большинстве случаев он точно соответствует этому). Однако с точки зрения CompSci мы можем теперь приступить к оптимизации вещей, которые на самом деле не мог бы сделать человек, как это делает сегодня компилятор GCC.

3 голосов
/ 28 апреля 2011

Как сказал jhaynie, приложение скомпилировано в нативный код, но все еще имеется интерпретатор для запуска некоторого JavaScript, который позволяет приложению быть очень динамичным.

Титановый appcelerator

1 голос
/ 16 марта 2010

Если я упаковываю свой простой достаточный код, я получаю gzip-архив размером ~ 80 МБ (исходный код ~ 1 КБ).В пакете - среди прочего - вы можете найти мои исходные файлы html и js.Есть также много библиотек (например, ssl), поставляемых с пакетом (потому что вы можете иметь низкоуровневый доступ ко многим вещам в этой структуре).вокруг некоторого программного обеспечения переводчика и библиотек.В моем случае это было бы, как если бы я упаковывал свой HTML и JS-код рядом с крошечным браузером, который отображает только мой сайт.хорошая вещь.

...