はじめに
今回の記事では、JVMとJavaのプログラムが実行されるまでの一連の流れをまとめました。
JVMとは
JVM(Java Virtual Machine)とは、Java仮想マシンとも呼ばれ、Javaのプログラムを動かすために必要なソフトウェアです。JVMのおかげで、様々なOS上で簡単にJavaのプログラムを実行することができます。
JVMを理解するために必要な知識
コンパイラ
コンパイラは、ソースコード(.java file)をバイトコード(.class file)に変更します。そして、コンパイラはソースコードに構文エラーがないかをチェックします。エラーを発見した際には、コンパイルエラー(Compile Time Error)がスローされます。
バイトコード
コンパイルの結果生成されたコードで、JVMによって処理されます。
特定のコンピュータやOSに依存せず、仮想マシン上で実行するために生成された中間コードで、ソースコードと機械語の間に位置するコードです。
機械語
コンピュータが理解できるコードで、CPUによって処理されます。機械語は0と1の2進数で表現されます。
Javaのプログラムはなぜ動くのか
Javaのプログラムがコンパイルされると、バイトコードが生成されます。このバイトコードがJVMによって機械語に変換されます。そして、CPUがその機械語を処理することで、Javaのプログラムが実行されます。
なぜJVMが必要なのか
JVMはどんな環境でもJavaのプログラムを実行できるようにします。
例えば、MacOS上でJavaのプログラムを実行したいときはMacOS用のJVM、Linux上で実行したいときはLinux用のJVMというように、各OS用のJVMをシステムにインストールすることで、様々なOS上で同じJavaのプログラムを実行することができます。
このように、JVMがOSの違いを吸収することで、JavaをMacOS、Linux、Windowsなど様々なOS上で実行することができます。
一度コンパイルされたJavaのプログラム(バイトコード)は、様々なOS上で実行可能です。それは、各システム用のJVMが、そのバイトコードを各システム用の機械語に変換するからです。