概要
Java仮想マシン(Java Virtual Machine: JVM)とは、仮想マシンの1つ。Javaバイトコードと呼ばれる、環境に依存しない中間コードを実行するためのものであり、Javaプログラムが環境に依らず実行されるために必要不可欠である。
機能
Javaプログラムは、対応する環境であればWindowsでもMacOSでもLinuxでもなんでも動作させることができる。これは、このJVMが環境による差を埋めてくれているからである。
コンパイル時にいきなりOSやCPUに依存し、これらが直接実行することができるネイティブコードに変換されるのではなく、Javaバイトコードという、JVMが解釈することのできる抽象的なバイトコードに変換される。
JVMは、用意されたJavaバイトコードを、実行中の環境に応じたネイティブコードに変換しながら実行していく。
初期のJVMは、バイトコードを実行しながら単純にその都度解釈・変換して実行していくインタプリタ型であり、CPUに依存するネイティブコードによるアプリケーションより動作が遅くなりがちだった。
しかしその後、実行される箇所をネイティブコードに変換し、再びそこが実行されるときは既に変換したネイティブコードを実行する、JITコンパイラ(Just In Time、「必要なときに」)が実装され、通常は十分高速になった。
関連項目
- Java
- 仮想環境
- Android: かつて、Dalvik仮想マシン(Wikipediaリンク)と呼ばれる、JVMの亜種のようなもの(実際には異なる)の上でAndroidアプリが動作していた。現在も似たような技術を利用したART(Wikipediaリンク)により動作しているが、ネイティブコードに変換されるタイミングが違う(JITではなくAhead Of Time、アプリインストール時に変換される)。
- エミュレータ