Java仮想マシン

Java仮想マシン（ジャバかそうマシン、、、JVM）は、Javaバイトコードとして定義された命令セットを実行するスタック型の仮想マシン。APIやいくつかのツールとセットでJava実行環境（JRE）としてリリースされている。この環境を移植することで、さまざまな環境でJavaのプログラムを実行することができる。
命令セット仕様.
ニーモニック表.
（12、C6 などの数値は16進法表記）
実装系.
エンタープライズ用（デスクトップ用を包含）としては、オラクル、IBM、HPなどの各社から実装系がリリースされている。OS上でアプリケーションとして動作する形態が一般的である。
Windowsにも標準でJava仮想マシンが実装されていたが、マイクロソフトがサン・マイクロシステムズとの契約に反して自社仕様の拡張機能を付加したため、Windows XP以降のOSではJavaの技術使用ライセンスを失った。
また、オープンソースコミュニティの手によってIKVM.NETという共通言語ランタイム上で動作するJava仮想マシンの実装も進められている。
変わった試みとしてGNU SmalltalkのVM上で構築されたJava仮想マシンが存在する。
picoJava, Jazelle などJava仮想マシンの命令がハードウェア実装されたプロセッサ、すなわちバイトコードを直接実行可能なプロセッサも存在する。
JITコンパイル.
最初のJava仮想マシンの実装（JDK 1.0）はインタプリタ型であったため、動作速度が他のアプリケーションに比べて遅い場合があった。そのため、メソッドの実行直前（Just in Time）にバイトコードをCPUのネイティブコードにコンパイルして実行する形式（JITコンパイラ）を、ボーランドや IBMなどがリリースした。サン・マイクロシステムズの実装もJDK 1.1からJITコンパイラを搭載した。
加えて、JDK 1.2から、サン・マイクロシステムズはHotSpotという高速化技術を導入した。HotSpotはJITコンパイラの一種だが、常にJITコンパイルを行うのではなく、実行回数が規定回数を超えたメソッド (Hotspot) のみをJITコンパイルする。これにより、JITコンパイルによる無駄なリソースの消費を防いだり、インタプリタ実行時のプロファイリング情報をJITコンパイル利用できる利点がある。HotSpotには用途別に、クライアントVM（コンパイルは高速だが生成されるネイティブコードが相対的にあまり最適化されない）と、サーバVM（コンパイルは低速だが生成されるネイティブコードが相対的により最適化される）がある。