C言語に代表されるような従来のプログラミング言語では、WindowsでコンパイルできるプログラムをそのままMacintoshでコンパイルできるとは限らない。
OSやCPUの種類によって扱えるものと扱えないものがあったりするからである。
Java言語をコンパイルして生成された中間コードは、そのままでは実行することはできない。
そのプラットフォーム(※)固有の形式(ネイティブコード)に変換するソフトウェアを用いて、変換しながら実行する。(逐次解釈)
この変換と実行を行うのがJava VMである。
Java VMをインストールすることによって、OSやCPUが違っても同じ中間コードを実行することができる。
これは、図にあるように、同じ中間コードを実行できるように各OSごとにJava VMが用意されているからだと考えればよい。
最近では中間コードをそのまま実行するのではなく、JIT(Just-in-time Compiler)を用いて、中間コードをネイティブコードに変換し、プログラムを高速に実行できるようにもなっている。
※プラットフォーム
アプリケーションを動かす際に基盤となるOSの種類や環境、設定などのこと。