Domanda

Sto lavorando alla creazione di un'app per iPhone con Titanium Mobile 1.0 e vedo che si compila in un file binario nativo per iPhone.Come funziona?Sembra che ci vorrebbe un sacco di lavoro pesante per analizzare il codice JavaScript e fare una traduzione diretta in Objective-C senza avere un linguaggio superset come Objective-J e Cappuccino di 280 North.

È stato utile?

Soluzione

Titanium prende il tuo codice Javascript, lo analizza e lo preelabora, quindi lo precompila in un insieme di simboli che vengono risolti in base all'utilizzo delle API Titanium da parte delle tue applicazioni.Da questa gerarchia di simboli possiamo creare una matrice di dipendenze dei simboli che si associa ai simboli della libreria Titanium sottostante per comprendere di quali API (e relative dipendenze, framework, ecc.) ha specificamente bisogno la tua app.Utilizzo la parola simbolo in modo semi-generico poiché è leggermente diversa in base alla lingua.In iPhone, il simbolo viene mappato a un vero simbolo C che alla fine viene mappato a un file .o compilato per le architetture ARM/i386.Per Java, beh, è ​​più o meno un file .class, ecc.Una volta che il front-end è in grado di comprendere la matrice delle dipendenze, invochiamo il compilatore SDK (ad es.GCC per iPhone, Java per Android) per poi compilare la tua applicazione nel binario nativo finale.

Quindi, un modo semplice di pensarci è che il tuo codice JS è compilato quasi uno a uno nei simboli rappresentativi in ​​patria.C'è ancora un interprete in esecuzione in modalità interpretata, altrimenti cose come il codice dinamico non funzionerebbero.Tuttavia, è molto più veloce, molto più compatto ed è il più vicino possibile alla mappatura nativa pura.

Ovviamente abbiamo ancora molto spazio per migliorare questo aspetto e lavorare su quello.Finora nei nostri ultimi test 1.0, è quasi indistinguibile dallo stesso codice diretto object-c (poiché nella maggior parte dei casi è esattamente mappato su quello).Dal punto di vista CompSci, ora possiamo tuttavia iniziare a ottimizzare cose che un essere umano non potrebbe fare facilmente, proprio come fa già oggi il compilatore GCC.

Altri suggerimenti

Come jhaynie detto, l'applicazione viene compilato in codice nativo, ma c'è ancora un interprete sul posto per eseguire alcuni javascript, che consente all'applicazione di essere molto dinamico.

Appcelerator titanio

Se il mio tipo di imballaggio ampio semplice codice ottengo un ~ 80MB archivio gzip (originale codice ~ 1kB). All'interno del pacchetto - tra gli altri - è possibile trovare il mio file js html sorgente e. Ci sono anche un sacco di librerie (SSL per esempio) forniti con il pacchetto (perché si può avere accesso a basso livello a un sacco di cose in questo quadro).

Credo che prendono il codice e avvolgono un qualche tipo di software di interprete e le librerie. Nel mio caso sarebbe come se metto in valigia il mio codice HTML e js accanto a un piccolo browser visualizza solo il mio sito.

Come sempre, fino a quando il codice funziona su tutti i sistemi supportati allo stesso modo la sua una cosa bella.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top