web-dev-qa-db-fra.com

Comment fonctionne Appcelerator Titanium Mobile?

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

78
Darrell Brogdon

Titanium prend votre code Javascript, l'analyse et le pré-traite, puis le précompile en un ensemble de symboles qui sont résolus en fonction de vos applications utilisent 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 Titanium sous-jacente pour comprendre les API (et les dépendances, cadres, etc.) spécifiques dont votre application a besoin. J'utilise le symbole Word de manière semi-générique car il est un peu différent en fonction de la langue. Dans l'iPhone, le symbole correspond à un véritable symbole C qui correspond finalement à un fichier .o compilé qui a été compilé pour les architectures ARM/i386. Pour Java, eh bien, c'est plus ou moins un fichier .class, etc. Une fois que le frontal peut comprendre votre matrice de dépendances, nous invoquons ensuite le compilateur SDK (c'est-à-dire GCC pour iPhone, Java pour Android ) pour ensuite compiler votre application dans le binaire natif final.

Donc, une façon simple de penser à cela est que votre code JS est compilé presque un à un dans les symboles représentatifs en nativeland. Il y a toujours un interpréteur fonctionnant en mode interprété, sinon des choses comme le code dynamique ne fonctionneraient pas. Cependant, c'est beaucoup plus rapide, beaucoup plus compact et c'est aussi proche que possible de la cartographie native pure.

Nous avons évidemment encore beaucoup de place pour améliorer ceci et y travailler. Jusqu'à présent dans nos derniers tests 1.0, il est presque impossible de le distinguer du même code direct objectif-c (car dans la plupart des cas, il est exactement mappé à cela). Du point de vue de CompSci, nous pouvons maintenant commencer à optimiser des choses qu'un humain ne pourrait vraiment pas faire facilement - un peu comme le compilateur GCC le fait déjà aujourd'hui.

147
jhaynie

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

titane appcelerator

3
Evan

Si j'emballe mon simple code ample, j'obtiens une archive gzip de ~ 80 Mo (code original ~ 1 Ko). Dans le package - entre autres - vous pouvez trouver mes fichiers source html et js. Il y a aussi beaucoup de bibliothèques (ssl par exemple) livrées avec le paquet (car vous pouvez avoir un accès de bas niveau à beaucoup de choses dans ce cadre).

Je pense qu'ils prennent votre code et s'enroulent autour d'une sorte de logiciel d'interprétation et de bibliothèques. Dans mon cas, ce serait comme si j'emballais mon code html et js à côté d'un petit navigateur qui n'affiche que mon site.

Cependant, tant que le code fonctionne de la même manière sur tous les systèmes pris en charge, c'est une bonne chose.

1
the-fallen