A Java Virtual Machine é uma maquina imaginaria que é implementada através da emulação em software, existe uma JVM diferente para cada Sistema Operacional (SO) e uma vez que sua aplicação é criada, a mesma pode ser executada em diversos SO através da JVM sem ter que ser recompilado.
O código que é executado pela JVM são os bytecodes, quando um arquivo .java é criado, o mesmo precisa ser compilado para .class essa compilação converte os códigos Java para bytecodes e a JVM se encarrega de executar os bytecodes e fazer a integração com o SO.
Fases da programação Java: