Як працює Appcelerator Titanium Mobile?


79

Я працюю над створенням програми для iPhone за допомогою Titanium Mobile 1.0 і бачу, що вона компілюється до власного двійкового файлу для iPhone. Як це працює? Здається, що для аналізу коду JavaScript і прямого перекладу на Objective-C потрібно б багато важких робіт, не маючи такої надмножинної мови, як 280 North's Objective-J та Cappuccino.


4
це з відкритим кодом. чому ти не зазирнеш під капот?
Габріеле Петріолі

17
@Gaby Я думаю, якщо мені цікаво, тоді як і інші, то який кращий спосіб поширювати інформацію, ніж публічно запитувати?
Даррелл Брогдон,

2
@Darrell, я повністю згоден .. я не намагаюся бити вас, просто подумав , що найшвидший маршрут (якщо необхідна специфіка) перевірятиме код безпосередньо .. вибачення , якщо він вийшов неправильний шлях ..
Gabriele Petrioli

1
маленький момент: Objective-J - надмножина javascript
cobbal

2
Я задав це запитання нещодавно і отримав набагато сучаснішу відповідь із інформацією, яка не описана у відповідях на цій сторінці. Ось питання: stackoverflow.com/questions/19060554/…
BT

Відповіді:


147

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

Отже, простий спосіб подумати про це - це те, що ваш код JS компілюється майже один до одного у репрезентативні символи у рідній країні. Все ще існує інтерпретатор, що працює в інтерпретованому режимі, інакше такі речі, як динамічний код, не працюватимуть. Однак він набагато швидший, набагато компактніший, і він приблизно такий же близький до чистого власного картографування, наскільки це можливо.

Очевидно, у нас ще є достатньо місця для покращення цього та роботи над цим. Наразі в нашому останньому тестуванні 1.0 він майже не відрізняється від того самого прямого коду об’єкт-с (оскільки в більшості випадків він точно зіставлений з цим). З точки зору CompSci, тепер ми можемо почати оптимізувати те, що людині насправді не вдалося зробити це, подібно до того, як компілятор GCC робить це вже сьогодні.


Ого, це справді чудово звучить. Дякую за роз'яснення. Я ніколи не уявляв, що на AppCelerator буде вкладено стільки зусиль. Продовжуйте чудову роботу!
MrMage

12
Чи правильно я зрозумів, що не відбувається перетворення Javascript-> Objective-C та Javascript-> Java, але це безпосередньо для власного коду? Тож немає можливості поглянути на створений код Objective-C чи Java?
janpio

1
Компіляція проводиться на сервері Titanium? Я бачив, що Wikipedia en.wikipedia.org/wiki/Appcelerator_Titanium
adib

1
@djaqeel clojure, scala, jruby, nashorn
gtrak

3

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

прискорювач титану


1

Якщо я упакую свій простий достатній код, я отримаю ~ 80 Мб архіву gzip (оригінальний код ~ 1 кБ). У пакунку - серед іншого - ви можете знайти мої вихідні файли html та js. Також разом із пакетом постачається багато бібліотек (наприклад, ssl) (оскільки ви можете мати низькорівневий доступ до багатьох речей у рамках цієї програми).

Я думаю, що вони беруть ваш код і обгортають якесь програмне забезпечення та бібліотеки інтерпретаторів. У моєму випадку це було б так, якби я упакував свій html і js код поруч із крихітним браузером, який відображає лише мій сайт.

Однак, поки код працює у кожній підтримуваній системі однаково, це приємно.


4
Коли я відкриваю .ipa, який створює Titanium, я бачу те, що здається стандартним компільованим додатком. Жодного коду HTML або JavaScript не вдається знайти.
Даррелл Брогдон,

1
Я думаю, що ви описали те, що робить Кордова, але Титан працює по-іншому
Рохіт Чаттерджі

упакуйте html і js-код за допомогою крихітного браузера ... і електрон народився через 5 років.
Caio Iglesias
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.