TL;DR

Java Virtual Machine の略。命令セットを持ち、実行時にメモリ領域を操作する抽象的な計算機である。Java プラットフォームの土台で、ハードウェアや OS に依存しない実行を担う。

なぜ必要か

JVM 仕様によると、Java はネットワーク越しに届いたコードを任意のクライアントで安全に動かすために作られた。JVM があれば、プログラムを一度書けば、Java の実行環境があるどのマシンでも動く。

仕組み

JVM は Java 言語のことを知らず、class ファイルという特定のバイナリ形式だけを知っている。class ファイルには JVM の命令(バイトコード)とシンボルテーブルが入っている。安全のため、JVM は class ファイルのコードに強い構文上・構造上の制約を課す。

仕様は実装の方法を決めていない。インタプリタで実装する必要はなく、命令セットを実際の CPU の命令にコンパイルしてもよい。

例

class ファイルで表せる機能を持つ言語なら、どれでも JVM 上で動かせる。Clojure、Kotlin、Scala はその例である。

関連

出典