質問

私はチタンモバイル1.0とiPhoneアプリの構築に取り組んでいると私はそれがiPhoneのネイティブバイナリにまでコンパイルされることを参照してください。これはどのように作動しますか?それはJavaScriptコードを解析するために重い物を持ち上げるの多くを取り、280北ののObjective-Jやカプチーノなどのスーパーセット言語を持たないのObjective-Cへの直接変換を行うだろうように思えるます。

役に立ちましたか?

解決

チタンは、JavaScriptコードを取り分析し、それを前処理し、その後、アプリケーションに基づいて解決されている記号のセットにそれを事前にコンパイルするチタンのAPIを使用しています。このシンボルの階層から、我々はどのAPIを(および関連する依存関係、フレームワーク、など)、具体的にアプリのニーズを理解することが基本となるチタンライブラリシンボルにマッピングし、シンボル依存マトリックスを構築することができます。それは言語に基づいて少し違うので、私は半一般的な方法で単語のシンボルを使用しています。 iPhoneでは、シンボルは、最終的にはARM / i386のアーキテクチャ用にコンパイルされたコンパイルされた.oファイルにマップ真のCシンボルにマッピングされます。 Javaの場合、まあ、それは多かれ少なかれの.classファイルだ、などのフロントエンドは、あなたの依存関係のマトリックスを理解することができたら、私たちはその後、その後、最終的にあなたのアプリケーションをコンパイルする(iPhone用すなわちGCC、Android向けのJava)SDKコンパイラを起動ネイティブバイナリ。

だから、それについて考えるための簡単な方法は、あなたのJSコードがnativelandの代表シンボルに、ほぼ一対一にコンパイルされていることです。インタプリタモードで実行されているインタープリターは、動的なコードのようなものは動作しませんそれ以外の場合は、まだあります。しかし、そのはるかに速く、よりコンパクト、それはあなたが得ることができるように、純粋なネイティブへのマッピングについての近くです。

私たちは明らかにまだこれを改善するための余地を持って、その上で作業しています。これまでのところ、私たちの最新の1.0のテストでは、それは(ほとんどの場合、それはまさにそれにマッピングされていますので)同じObjective-Cの直接コードからほとんど区別がつかないのです。 CompSciの観点から、私たちは今、しかし、人間は本当に簡単にそれを行うことができなかったという事を最適化するために開始することができます - 多くのGCCコンパイラのように、すでに今日ません。

他のヒント

jhaynieのようなアプリケーションは、アプリケーションは非常に動的にすることを可能にする、ネイティブコードにコンパイルされますが、いくつかのJavaScriptを実行するには、インプレース通訳がまだあるさ、と述べています。

<のhref = "http://www.itwriting.com/blog/4198-is-appcelerator-titanium-native-and-what-does-native-mean-anyway.html/comment-page-1#コメント-535303" をREL = "" nofollowを> Appceleratorのチタンの

私は、単純な十分なコードをパッケージ化する場合は、

私は〜80メガバイトのgzipでアーカイブ(オリジナルコード〜1kBの)を取得します。パッケージ内 - 中でも - あなたは私のソースhtmlとjsのファイルを見つけることができます。 パッケージに同梱されたライブラリの多く(例えばSSL)は、(あなたはこの枠組みの中で多くのことへの低レベルのアクセスを持つことができるので)もあります。

私は、彼らはあなたのコードを取り、通訳ソフトウェアやライブラリのいくつかの種類を折り返すと思います。 私の場合、それは私だけで、私のサイトを表示する小さなブラウザの隣に私のhtmlとjsのコードをパックする場合のようになります。

どのようにこれまで、限り、コードは同じように、すべてのサポートされているシステム上で動作するように、その良いところます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top