Oie Gabriel, tudo bem contigo?
Sim, para um programa feito em java ser executado primeiro ele precisa ser compilado, e ao final dessa compilação o código java terá virado bytecode.
A JVM irá executar a ".class" não importando o sistema operacional, pois ela foi desenvolvida através de código nativo permitindo que ela converse diretamente com o sistema operacional em que ela foi instalada.
Caso tenha interesse em aprender mais sobre o funcionamento da JVM, achei um artigo bem legal que fala sobre isso. Clique aqui para ver.
Se tiver outra dúvida fico a disposição :)
Bons estudos!