Pregunta

Estoy trabajando en la construcción de una aplicación para iPhone con Titanium Mobile 1.0 y veo que se compila a un binario iPhone nativa. ¿Como funciona esto? Parece que sería tomar un montón de trabajo pesado para analizar el código JavaScript y hacer una traducción directa en Objective-C sin tener una lengua como superconjunto 280 del Norte Objetivo-J y capuchino.

¿Fue útil?

Solución

El titanio tiene su código Javascript, analiza y procesa previamente y luego pre-compila en un conjunto de símbolos que se resuelven basan en sus aplicaciones utiliza las API de titanio. De esta jerarquía símbolo podemos construir una matriz de dependencias símbolo que se asigna a los símbolos de biblioteca subyacentes de titanio de entender que las API (y dependencias relacionadas, marcos, etc.) específicamente sus necesidades de aplicaciones. Estoy usando la palabra símbolo de una manera semi-genérica, ya que es un poco diferente basado en el lenguaje. En iPhone, el símbolo se asigna a un verdadero símbolo C que en última instancia se asigna a un archivo compilado .o que ha sido compilado para arquitecturas ARM / i386. Para Java, así, es más o menos un archivo .class, etc. Una vez que el extremo delantero puede entender su matriz de dependencias, que luego llamar al compilador del SDK (es decir GCC para iPhone, Java para Android) a continuación, compilar la aplicación en la final binario nativo.

Por lo tanto, una forma simple de pensar en ello es que su código JS se compila casi una a una en los símbolos representativos de nativeland. Todavía hay un intérprete ejecuta en modo interpretado de otra manera las cosas como código dinámico no funcionarían. Sin embargo, es mucho más rápido, mucho más compacto y es lo más cercano a la cartografía nativa pura que se puede obtener.

Estamos, evidentemente, todavía tenemos mucho espacio para mejorar esto y trabajando en eso. Hasta ahora, en nuestra última prueba 1.0, es casi indistinguible del código directa mismo objetivo-c (ya que en la mayoría de los casos la que está asignada exactamente a eso). Desde un punto de vista CompSci, podemos empezar ahora, sin embargo para optimizar cosas que un ser humano realmente no podría hacerlo fácilmente. - al igual que el compilador GCC ya lo hace hoy

Otros consejos

Al igual que jhaynie dijo, la aplicación se compila en código nativo, pero todavía hay un intérprete en el lugar para ejecutar algo de JavaScript, lo que permite que la aplicación sea muy dinámico.

appcelerator titanio

Si Empaqueto mi código simple amplia consigo un archivo de 80 MB ~ gzip (original Código ~ 1kB). Dentro del paquete - entre otros - se puede encontrar mi código fuente HTML y archivos js. También hay una gran cantidad de bibliotecas (SSL, por ejemplo) que se entrega con el paquete (porque se puede tener acceso de bajo nivel a un montón de cosas en este marco).

Creo que se llevan su código y se envuelven alrededor de algún tipo de software intérprete y bibliotecas. En mi caso sería como si embalo código HTML y JS junto a un pequeño navegador que sólo muestra mi sitio.

Como siempre, siempre y cuando el código funciona en todos los sistemas con el apoyo de la misma manera que es una cosa agradable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top