Titanium nimmt Ihren Javascript-Code, analysiert und verarbeitet ihn vor und kompiliert ihn dann in eine Reihe von Symbolen vor, die basierend auf der Verwendung von Titan-APIs durch Ihre Anwendungen aufgelöst werden. Aus dieser Symbolhierarchie können wir eine Symbolabhängigkeitsmatrix erstellen, die den zugrunde liegenden Symbolen der Titanium-Bibliothek zugeordnet ist, um zu verstehen, welche APIs (und zugehörige Abhängigkeiten, Frameworks usw.) speziell Ihre App benötigt. Ich verwende das Wortsymbol halb generisch, da es je nach Sprache etwas anders ist. Im iPhone wird das Symbol einem echten C-Symbol zugeordnet, das letztendlich einer kompilierten O-Datei zugeordnet wird, die für ARM / i386-Architekturen kompiliert wurde. Für Java ist es mehr oder weniger eine .class-Datei usw. Sobald das Front-End Ihre Abhängigkeitsmatrix verstehen kann, rufen wir den SDK-Compiler auf (dh GCC für iPhone,
Eine einfache Möglichkeit, darüber nachzudenken, besteht darin, dass Ihr JS-Code fast eins zu eins in die repräsentativen Symbole im Heimatland kompiliert wird. Es gibt immer noch einen Interpreter, der im interpretierten Modus ausgeführt wird, sonst würden Dinge wie dynamischer Code nicht funktionieren. Es ist jedoch viel schneller, viel kompakter und kommt dem reinen nativen Mapping so nahe wie möglich.
Wir haben offensichtlich noch viel Raum, um dies zu verbessern und daran zu arbeiten. Bisher ist es in unseren letzten 1.0-Tests kaum von demselben objektiven c-Direktcode zu unterscheiden (da es in den meisten Fällen genau darauf abgebildet ist). Vom Standpunkt von CompSci aus können wir jetzt jedoch damit beginnen, Dinge zu optimieren, die ein Mensch wirklich nicht so einfach tun kann - ähnlich wie es der GCC-Compiler bereits heute tut.