Java仮想マシン(JVM)とは?Javaが動く仕組みはコンパイルとインタプリタ方式
Java仮想マシン(JVM)についてざっくりイメージでみていきましょう🎵
Java仮想マシン(JVM)とは?
Java仮想マシンとは、Javaプログラムをパソコンやスマホなどの機器(ハードウエア)で動かすためのアプリケーション(ソフトウエア)です。
「Java Virtual Machine」を略して、JavaVMやJVMと言われたりもします。
私は「JVM」(ジェーブイエム)と言っていることが多いです。
Javaの特徴はまさにJava仮想マシンだと思います。
Java仮想マシンというアプリケーションがあるお陰で、ハードウエアに依存することなく、Javaプログラムを動かすことができます。
Javaが登場する前は、Windowsパソコン用に開発されたアプリケーションはWindowsパソコンでのみ、Mac用に開発されたアプリケーションはMacでのみ動くというように、それぞれ専用のアプリケーションがつくられていました。
Java仮想マシンのイメージはこんな感じ。
相変わらず下手ですね笑
例えば、画面に文字を出力するJavaプログラムは「System.out.println」(①)です。
このプログラムがJava仮想マシン(②)上で実行され、パソコンなどのハードウエア(③)に表示されます。
Java仮想マシンがあることで、ハードウエアの違いをいい感じに吸収してくれ、同じプログラムを様々なハードウエア上で動かすことができます。
ちなみに、処理をもっと具体的に言うと、
①にてJavaコンパイラでJavaバイトコードに変換
②にてJava仮想マシンでJavaバイトコードをコンピュータが理解できる機械語に変換し、コンピュータに処理を命令
③にて処理結果を出力する
という感じになります。
コンパイルとインタプリタ
プログラム言語はコンピュータが直接理解できる言葉ではありません。
なので、コンピュータが理解できるよう変換(翻訳)してあげる必要があります。
変換の方法は「コンパイル方式」と「インタプリタ方式」というのがあります。
この2つは変換するタイミングが違います。
コンパイル方式は、プログラムをいったん機械語のファイルに変換し、その機械語になったプログラムを実行する方式です。
変換することを「コンパイル」、変換するプログラムを「コンパイラ」と言います。
インタプリタ方式は、プログラムを1行づつ機械語に変換しながら実行する方式です。
例えば、コンパイル方式は英語の本をいったん日本語に翻訳し、翻訳された本を読むようなイメージで、インタプリタ方式は英語を同時に通訳するイメージです。
Javaは、JavaコンパイラによってJavaバイトコードという中間コード(classファイル)に変換され、それをJava仮想マシンが1行づつ解釈(機械語に変換)して実行します。
なので、コンパイル方式とインタプリタ方式両方の特徴を持ったものになります。
Javaコンパイラによって、Javaバイトコードに変換されること⇒Java仮想マシンの機械語に変換されることで、Java仮想マシンさえあれば、どこでも動くプログラムになるわけですね。
機械語とはコンピュータが直接理解できる言語
先ほどちょっと出てきましたが、「機械語」って何でしょうか。
それは「コンピュータが直接理解できる言語」です。
こんな感じの数値の羅列なんですね。
何が書いてあるのかさっぱり分かりませんね笑
最初から機械語でプログラムを書けば、わざわざ変換する必要もありませんが、機械語でプログラムを書くのはと~~~っても難しそうです!!!
なので、私たちに分かって、書きやすいように作られたプログラミング言語を使ってプログラミングするんですね。