Java Fundamentos: portabilidade
Explicação introdutória sobre portabilidade em Java, JVM, bytecode e execução em diferentes ambientes.
A portabilidade do Java vem da combinação entre código compilado para bytecode e execução por uma JVM compatível.
Portabilidade do Java
Uma das características mais conhecidas do Java é a portabilidade.
De forma simples, portabilidade é a capacidade de um programa ser executado em diferentes ambientes com pouca ou nenhuma alteração no código original.
No Java, essa ideia acontece principalmente por causa da JVM, a Máquina Virtual Java.
O que é a JVM
A sigla JVM significa Java Virtual Machine.
Podemos entender a JVM como uma camada de execução entre o programa Java e o sistema operacional.
Quando um código Java é compilado, ele não vira diretamente um executável específico de Windows, Linux ou macOS.
Ele vira um formato intermediário que a JVM consegue executar.
O que acontece na compilação
Quando compilamos um código Java, o compilador gera arquivos .class.
Esses arquivos contêm bytecodes, que são instruções compreendidas pela JVM.
Então o fluxo fica assim:
Código Java (.java)
↓
Compilação
↓
Bytecode (.class)
↓
Execução pela JVM
Por que isso gera portabilidade
A portabilidade acontece porque diferentes sistemas operacionais podem ter implementações compatíveis da JVM.
Assim, o mesmo programa Java pode ser executado em vários ambientes, desde que exista uma JVM adequada para aquele sistema.
A preocupação com detalhes específicos do sistema operacional e da arquitetura do hardware fica, em grande parte, com a implementação da JVM.
Isso reduz o trabalho do desenvolvedor que escreveu o sistema em Java.
Um cuidado importante
Java não roda literalmente em qualquer máquina do mundo de forma automática.
Para executar um programa Java, o ambiente precisa ter uma JVM compatível e configurada corretamente.
Então a ideia correta é:
O mesmo programa Java pode rodar em diferentes plataformas, desde que exista uma JVM compatível para essas plataformas.
Resumo
A portabilidade do Java é resultado da execução por meio da JVM.
O código Java é compilado para bytecode, e esse bytecode pode ser executado em diferentes sistemas por meio de uma JVM compatível.
Essa característica foi uma das razões pelas quais Java se tornou uma linguagem muito usada em ambientes variados.