Titanium toma su código Javascript, lo analiza y lo preprocesa y luego lo precompila en un conjunto de símbolos que se resuelven en función de los usos de sus aplicaciones de las API de Titanium. A partir de esta jerarquía de símbolos, podemos construir una matriz de dependencia de símbolos que se asigne a los símbolos de la biblioteca Titanium subyacentes para comprender qué API (y dependencias relacionadas, marcos, etc.) necesita específicamente su aplicación. Estoy usando la palabra símbolo de forma semi-genérica, ya que es un poco diferente según el idioma. En iPhone, el símbolo se asigna a un verdadero símbolo C que finalmente se asigna a un archivo .o compilado que se ha compilado para arquitecturas ARM / i386. Para Java, bueno, es más o menos un archivo .class, etc. Una vez que el front-end puede comprender su matriz de dependencia, invocamos el compilador SDK (es decir, GCC para iPhone,
Entonces, una forma simple de pensarlo es que su código JS se compila casi uno a uno en los símbolos representativos en el país nativo. Todavía hay un intérprete ejecutándose en modo interpretado, de lo contrario, cosas como el código dinámico no funcionarían. Sin embargo, es mucho más rápido, mucho más compacto y es lo más parecido al mapeo nativo puro que puede obtener.
Obviamente, todavía tenemos mucho espacio para mejorar esto y trabajar en eso. Hasta ahora, en nuestra última prueba 1.0, es casi indistinguible del mismo código directo objetivo-c (ya que en la mayoría de los casos está exactamente asignado a eso). Sin embargo, desde el punto de vista de CompSci, ahora podemos comenzar a optimizar cosas que un ser humano realmente no podría hacer fácilmente, al igual que el compilador GCC ya lo hace hoy.