非常に多くの JIT 実装が存在するため、すべての JIT がネイティブ コードを発行します。では、ネイティブ コードをネイティブ実行可能ファイルに保存するための JIT2EXE のようなツールを作成しなかったのはなぜでしょうか。
4 に答える
あなたが話している言語を明確に指定していないため、質問は漠然としています.NETの私の領域では、.NET実行可能ファイルは、読み込み時間を短縮するために実行時にpre-jitされています。このコードは、NGEN と呼ばれるプロセスによってネイティブ コードに生成できます。NGEN は、.NET IL コードを取得し、プロセッサが理解できるバイナリのプロセスでそれを変換します。通常、NGEN コードは 'C:\Windows\Assembly\NativeImages_ {version} '内のフォルダーに格納されます。ここで、バージョンは .NET Framework のバージョンを表します。NGEN とそれを使用できる場所と使用するタイミングについては、Jeffrey Richter による CodeGuruを参照してください。ネイティブバイナリコードとの統計/比較に関するこの記事については、Codeprojectのこちらをご覧ください。ここでもダニエル・ピステリによるものです。
ngenのようなものですか?
実際のところ、多くの Java (または他のインタープリター言語) からネイティブへのコンパイラーがあります。gcjについて聞いたことがありますか?
一部の重要な部分をネイティブ コードにコンパイルし、残りをバイトコードとして保持してスペースを節約する混合コンパイラもあります。Harissa は 10 年以上前にこれを行いました。
Java コードは最初に C コードにコンパイルされ、その後、最適化を利用するために通常の C コンパイラに渡されます。このようなコードは、非常に高速になる可能性があります。
もちろん、このような事前コンパイル (ジャストインタイム コンパイルとは対照的に) は、バイトコード形式のいくつかの利点 (特に移植性と低メモリ フットプリント) を無効にするため、実際のアプリケーションはかなりまれです。
質問で述べていること (「誰も JIT2EXE のようなツールを作成していません」) は、まったく真実ではありません。