Comment fonctionne Appcelerator Titanium Mobile?

Je travaille sur la construction d'une application pour iPhone avec Titanium Mobile 1.0 et je vois qu'elle se compile vers un binaire d'iPhone natif. Comment cela marche-t-il? On dirait qu'il faudrait beaucoup de travail lourd pour analyser le code JavaScript et faire une traduction directe dans Objective-C sans avoir une langue en suralimentation comme Objective-J et Cappuccino de 280 North.

Titanium prend votre code Javascript, les analyse et le préprocesse, puis le compile préalablement dans un ensemble de symboles qui sont résolus en fonction de vos applications utilisables dans les API Titanium. À partir de cette hiérarchie de symboles, nous pouvons créer une matrice de dépendance de symboles qui correspond aux symboles de la bibliothèque titane sous-jacente afin de comprendre quelles API (et dépendances, cadres, etc.) spécifiques à la demande de votre application. J'utilise le symbole du mot de façon semi-générique car c'est un peu différent en fonction de la langue. Dans l'iPhone, le symbole correspond à un symbole C réel qui, finalement, correspond à un fichier .o compilé qui a été compilé pour les architectures ARM / i386. Pour Java, bien, c'est plus ou moins un fichier .class, etc. Une fois que l'interface peut comprendre votre matrice de dépendance, nous appelons le compilateur SDK (c'est-à-dire GCC pour iPhone, Java pour Android) pour compiler votre application dans la finale Binaire natif.

Donc, un moyen simple de penser à ce sujet est que votre code JS est compilé presque un à un dans les symboles représentatifs en nativeland. Il y a toujours un interprète qui fonctionne en mode interprété, sinon des choses comme le code dynamique ne fonctionneraient pas. Cependant, il est beaucoup plus rapide, beaucoup plus compact et il s'agit du cartographie native aussi proche que possible.

Nous avons évidemment encore beaucoup de place pour améliorer cela et travailler à ce sujet. Jusqu'à présent, dans notre dernier essai 1.0, il est presque indiscernable du même code c objectif-c (car dans la plupart des cas, il est exactement adapté à cela). D'un point de vue de CompSci, nous pouvons maintenant commencer à optimiser les choses qu'un être humain ne pouvait vraiment pas facilement faire, comme le compacteur GCC fait déjà aujourd'hui.

Comme l'a dit jhaynie, l'application est compilée en code natif, mais il existe encore un interprète sur place pour exécuter un javascript, ce qui permet à l'application d'être très dynamique.

Appcelerator titanium

Si je package mon code amplement simple, j'obtiens une archive gzip de ~ 80 Mo (code original ~ 1kB). Dans le paquet, parmi d'autres, vous pouvez trouver mes fichiers source html et js. Il existe également beaucoup de bibliothèques (ssl par exemple) livrées avec le package (car vous pouvez avoir un accès de bas niveau à beaucoup de choses dans ce cadre).

Je pense qu'ils prennent votre code et se comportent autour d'une sorte de logiciel d'interprète et de bibliothèques. Dans mon cas, ce serait comme si j'embarquais mon code html et js à côté d'un petit navigateur qui affiche mon site uniquement.

Quoi qu'il en soit, tant que le code fonctionne sur tous les systèmes supportés de la même manière, c'est une bonne chose.