JITコンパイラ
JITコンパイラ(実行時コンパイラ)とは
JITコンパイラとは Just In Timeの略で、その名の通り"必要なものを必要な時に"コンパイルするコンパイラのことです。
ソフトウェア実行時にコードのコンパイルを行い実行速度の向上を図るコンパイラで「実行時コンパイラ」とも呼ばれています。
通常のコンパイラは、ソースコードから機械語(オブジェクトコード)への変換を実行前に事前に行います。
それに対しJITコンパイラは、ソフトウェア実行時にソースコード または 中間コード(バイトコード)を機械語(オブジェクトコード)に変換します。
JITコンパイラ(実行時コンパイラ)の利点
実行時にコンパイルを行うことでプラットフォーム(Windows、macOS、LinuxなどのOSやハードウェア)に依存しないソースコードや中間コードの状態でソフトウェアを配布することができます。
次の図はJavaの実行イメージ例です。Javaはプラットフォームに依存せず、さまざまな環境で動かすことができるプログラミング言語です。
Javaプログラムは事前にJava仮想マシン(JVM)上で動作する中間コード(バイトコード)にコンパイル(事前コンパイラ)します。そして、実行時にJITコンパイラ(実行時コンパイラ)を使い高速に処理しています。
このようにJITコンパイラを利用することで、各プラットフォームで実行可能な形式のコード(機械語)への変換を実行時に行うことができます。
JITコンパイラは、機械語に変換しながら実行するインタプリタと表面上は同じように動作するが、内部ではコンパイルを行いインタプリタと比べると高速に動作します。
また事前コンパイルと比べると、JITコンパイラは実行時にコンパイルするため、その分の時間がかかるも、実行環境を知った上でそれに応じた生成コードの選択や最適化を行うことができるため、事前コンパイルよりも優れたコードを生成できる可能性があります。