Extraído de JavaGuide (Github star 134k star! "Java Learning + Interview Guide" cubre el conocimiento básico que la mayoría de los programadores de Java necesitan dominar)
JVM
La máquina virtual de Java (JVM) es una máquina virtual que ejecuta el código de bytes de Java. La JVM tiene implementaciones específicas para diferentes sistemas (Windows, Linux, macOS), con el objetivo de usar el mismo bytecode, todos darán el mismo resultado. El código de bytes y la implementación de JVM de diferentes sistemas son la clave para "compilar una vez, ejecutar en cualquier lugar" del lenguaje Java.
¡No hay una sola JVM! Siempre que se cumpla la especificación JVM, cada empresa, organización o individuo puede desarrollar su propia JVM exclusiva. En otras palabras, la máquina virtual HotSpot con la que normalmente entramos en contacto es solo una implementación de la especificación JVM.
Además de la VM HotSpot más utilizada, también existen JVM como J9 VM, Zing VM y JRockit VM. Hay una comparación de JVM comunes en Wikipedia: Comparación de máquinas virtuales Java , puede consultarla si está interesado. Además, puede encontrar las especificaciones de Java SE<