Вопрос

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

Это было полезно?

Решение

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 уже делает это сегодня.

Другие советы

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

appcelerator титан

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

Я думаю, что они берут ваш код и оборачивают его каким-то программным обеспечением-интерпретатором и библиотеками.В моем случае это было бы похоже на то, если бы я упаковал свой код html и js рядом с крошечным браузером, который отображает только мой сайт.

Однако, если код одинаково работает во всех поддерживаемых системах, это хорошо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top