Tiramos sua dúvida Marcos? Mas se quer saber por que isso acontece de java ter toda essa portabilidade, vou explicar, mas você pode ler o livro Thinking in Java(que tem uma ótima explicação sobre isso) para entender mais…
O java não roda no sistema operacional em si, na verdade, ele roda em cima de outro “sistema operacional” dentro da sua máquina, que se chama JVM(Java Virtual Machine), a partir do código fonte que você programou(high-level) ele é compilado e se torna uma bytecode, que é a linguagem que a JVM sabe ler, seria como um low-level language exclusiva do java… Dessa forma, isso permite que seu programa seja utilizado em outros sistemas operacionais que tenham a JVM…
Mas claro, fique atento à entrada do teclado, nunca fiz um programa para o celular, mas, se você criasse um jogo de corrida, por exemplo, compilasse no windows, e tentasse utilizá-lo no mobile, o que aconteceria? Os controles não estariam definidos para o mobile, a screen poderia bugar, ter uso excessivo de memória…
EDIT: OPs, dei a nomenclatura errada xD