Extraído do JavaGuide (Github star 134k star! "Java Learning + Interview Guide" abrange o conhecimento básico que a maioria dos programadores Java precisa dominar)
JVMName
A Java Virtual Machine (JVM) é uma máquina virtual que executa o bytecode Java. A JVM possui implementações específicas para diferentes sistemas (Windows, Linux, macOS), com o objetivo de utilizar o mesmo bytecode, todas darão o mesmo resultado. O bytecode e a implementação JVM de diferentes sistemas são a chave para "compilar uma vez, executar em qualquer lugar" da linguagem Java.
Não existe apenas uma JVM! Desde que a especificação JVM seja atendida, cada empresa, organização ou indivíduo pode desenvolver sua própria JVM exclusiva. Em outras palavras, a VM HotSpot com a qual normalmente entramos em contato é apenas uma implementação da especificação JVM.
Além da VM HotSpot mais comumente usada, também existem JVMs como J9 VM, Zing VM e JRockit VM. Há uma comparação de JVMs comuns na Wikipedia: Comparação de máquinas virtuais Java , você pode conferir se estiver interessado. Além disso, você pode encontrar as Especificações do Java SE<