Máquina virtual Java o JVM
Una máquina virtual Java (JVM, por sus siglas en inglés), una implementación de la Especificación de máquina virtual Java, interpreta el código binario Java compilado (llamado código byte) para el procesador de una computadora (o "plataforma de hardware") para poder ejecutar las instrucciones de un programa Java.
Java fue diseñado para permitir la creación de programas de aplicación que pudieran ejecutarse en cualquier plataforma sin tener que ser reescrito o recompilado por el programador para cada plataforma separada. Una máquina virtual Java lo hace posible porque conoce las longitudes de instrucción específicas y otras particularidades de la plataforma.
La especificación de máquina virtual de Java define una máquina o procesador abstracto, en lugar de real. La Especificación define un conjunto de instrucciones, un conjunto de registros, una pila, un "montón de basura" (garbage heap) y un área de método.
Una vez que se ha implementado una máquina virtual Java para una plataforma determinada, cualquier programa Java (que, después de la compilación, se denomina código de bytes) puede ejecutarse en esa plataforma. Una máquina virtual Java puede interpretar el código de bytes una instrucción a la vez (asignándolo a una instrucción de procesador real) o el código de bytes puede compilarse más para el procesador real usando lo que se llama un compilador justo a tiempo.