インタープリタとJITコンパイラの主な違いは、インタープリタがソースコードを一行ずつネイティブなマシンコードに変換するソフトウェアであるのに対し、JITコンパイラはJVMのコンポーネントで、実行時にバイトコードをネイティブなマシンコードにコンパイルしてJavaプログラムの性能を向上させるものであることです。
インタープリタは、プログラマが書いた命令やスクリプトを、CPUの特定のハードウェアプラットフォームに適合するマシンコードに変換するプログラムです。
一方、JITは、バイトコードを実行時に機械語に変換するコンパイラです。
CPU時間とメモリが必要である。
インタープリターとは
プログラマーは、高度なプログラミング言語を使ってコンピュータのプログラムを書きます。
彼は、これらのプログラムの構文を容易に読み、理解することができる。
しかし、CPUはこれらのプログラムを理解し、プログラムで定義されたタスクを実行することはできない。
したがって、高レベルのソースコードを機械的に理解可能なマシンコードに変換する必要がある。
図1:Pythonインタープリタ
インタープリタは、上記の変換を行うソフトウェアです。
プログラムのソースコードを一行ずつ機械語に変換する。
1行ずつチェックするため、スキャンにかかる時間は短くなる。
しかし、プログラム全体の実行時間は長くなる。
したがって、Python、Perl、Ruby、PHPなどのインタプリタ型言語は低速な言語と言える。
JITコンパイラとは
javacコンパイラは、Javaのソースコードをバイトコードに変換します。
Java仮想マシン(JVM)は、このバイトコードを実行することができます。
JVMは、CPUがプログラムで定義されたタスクを実行できるように、そのバイトコードを同等のマシンコードに変換します。
JITは、Just in Timeコンパイラの略です。
JVMの不可欠なコンポーネントです。
また、JITはJVMがJavaバイトコードをより速く実行できるようにサポートし、Javaプログラムの性能を向上させる。
図2:Javaバイトコード
JVMがインストールされているコンピュータであれば、バイトコードを実行することができます。
言い換えれば、JVMがインストールされているプラットフォームであれば、バイトコードをインストールすることができます。
このため、Javaはプラットフォームに依存しないプログラミング言語となっています。
インタープリタとJITコンパイラの違い
定義
インタープリターとは、高級プログラミング言語やスクリプト言語で書かれた命令を機械語のプログラムに変換するソフトウェアのことである。
JITコンパイラは、Javaアプリケーションの実行時のパフォーマンスを向上させるJava Runtime Environment(JVMはJREの一部)のコンポーネントです。
これらの定義は、インタープリタとJITコンパイラの主な違いを説明しています。
機能性
インタープリタは、ソースコードを1行ずつ機械語に変換する。
JITコンパイラは、実行時にバイトコードを機械語にコンパイルすることで、バイトコードの高速実行を支援します。
実行速度
インタープリタの実行速度は、JITコンパイラよりも遅い。
これもインタープリタとJITコンパイラの違いです。
関連言語
インタプリタとJITコンパイラのもう一つの違いは、PHP、Perl、Python、Rubyがインタプリタベースの言語であるのに対し、JavaはJITコンパイラを使用していることです。
結論
インタープリタとJITコンパイラの基本的な違いは、インタープリタがソースコードを一行ずつネイティブなマシンコードに変換するソフトウェアであるのに対し、JITコンパイラはJVMのコンポーネントで、実行時にバイトコードをネイティブなマシンコードにコンパイルしてJavaプログラムの性能を向上させるという点です。