私はJITコンパイラが何であるかを知っていますが、なぜそれがそれと呼ばれるのですか?それは明らかに例外をキャッチしますジャストインタイムですが、どのようにそしてなぜこれがこれと呼ばれるべきですか?
これが少し漠然と聞こえたら申し訳ありません。
Just-In-Timeコンパイラは、例外とは何の関係もありません。コードがコンパイルされるタイミングを指します。 Javaなどの一部の言語は、お気に入りのエディターでプログラムした言語からバイトコードに変換されます。実行時に、一部のバイトコードは、実行の直前にネイティブコードにさらにコンパイルされる場合があります(そのため、ジャストインタイム)。これは、コンパイラーを呼び出すときにネイティブマシンコードにコンパイルされるCなどの一部の言語とは対照的です。
名前は 「ジャストインタイム」の製造方法 に由来します。ここでは、部品は「ジャストインタイム」でインストールされて納品されます。製造では、部品やサプライ品を在庫に入れておく必要があり、必要に応じてそれらを製造して配送することは、プロセスをより安く/より効率的にするために多額の費用がかかります。
Java JITコンパイラは、JIT製造と同様の方法で機能します。事前にコードをコンパイルして保持する代わりに、必要に応じてコードをコンパイルします。これにより、開発サイクルが短くなり、インタプリタ言語とコンパイルされた言語の速度。
.Netでは、C#プログラムがコンパイルされると、いわゆる「Microsoft中間言語」(MSIL)コードにコンパイルされます。このコードはマシンに依存しません。 MSILコードはそのままでは直接実行できません。ターゲットOS(およびCPU)で実行できるコードに変換(および最適化)する必要があります。この変換は、.Netプログラムの実行を要求したときに発生し、Just In Time(JIT)コンパイラーによって実行されます。JITは、アプリケーションを実行しているOS(およびCPU)に固有の実行可能ファイルを生成します。つまり、Just In Timeという名前は、MSILからネイティブOSコードへのコンパイルは、コードに実行を要求したときにのみ発生することを示しています。詳細については、「 MSILをネイティブコードにコンパイルする 」を参照してください。
コードは呼び出されるとコンパイルされます。コンパイルされるのは、時間内、または必要に応じて呼び出される直前です。
これはメソッドに適用されます。メソッドが呼び出されない場合、コンパイルされることはありません。
例外はありません。
この名前は、ソフトウェアが実行されるまで、マシンコードにコンパイルされないことを反映しています。これにより、アプリケーションを複数のコンピューターにデプロイし、マシン固有の最適化を実行時に適用できます。