Mas como ele consegue?
Para funcionar desse modo o Java trabalha com uma máquina virtual fazendo a intermediação entre o sistema java e o sistema operacional.
Abaixo a imagem mostra como funciona.
Para entender melhor a imagem vamos ver o que compõe cada etapa.
O Código-Fonte é feito pelo programador, ele é o que faz o sistema java criar as telas, as rotas etc.
O Compilador é o que faz com que o código fonte se "transforme" no sistema java.
Como exemplo temos o NetBeans e o Eclipse.
O Byte-Code são os class que são gerados após compilar o código-fonte, os .class é o que compõe o arquivo .jar, o arquivo .jar é tipo o contêiner e os .class ficam la dentro.
Não pense que isso só tem seu lado positivo, isso conta muitos pontos na comparação com outras linguagens, mas em contra partida isso torna o sistema mais lento pois todo comando precisa ser intermediado pela máquina virtual ao contrário do .exe que se comunica direto com o Sistema Operacional Windows.
Mas hoje as máquinas são muito mais potentes que antigamente e essa intermediação do arquivo.jar com o S.O. torna-se quase que instantânea tornando o java uma das linguagens mais dinâmicas e poderosas para se programar atualmente.