Qual das seguintes afirmações sobre a JVM (Java Virtual Machine) e o bytecode está correta?
Questão
Qual das seguintes afirmações sobre a JVM (Java Virtual Machine) e o bytecode está correta?
Alternativas
O bytecode é um código intermediário gerado pelo compilador Java e é diretamente executado pelo hardware da máquina, proporcionando maior eficiência na execução do programa.
A JVM é responsável por interpretar o bytecode Java durante a execução do programa, tornando possível a execução do mesmo código em diferentes plataformas que tenham uma JVM compatível. O bytecode é gerado pela compilação do código-fonte Java e não é diretamente executado pelo hardware da máquina, mas sim pela JVM.
A JVM compila o código-fonte Java diretamente para linguagem de máquina específica do sistema operacional em que está sendo executada.
A JVM é responsável por traduzir o código-fonte Java diretamente para o bytecode, que é posteriormente interpretado pelo sistema operacional para executar o programa.
A JVM atua como um emulador de hardware, permitindo que o código-fonte Java seja executado diretamente pelo processador da máquina, ignorando o bytecode.
Explicação
O fluxo correto de execução em Java é: código-fonte (.java) → compilação (javac) → bytecode (.class) → execução na JVM.
- Bytecode: é um código intermediário e portátil, gerado pelo compilador Java. Ele não é executado diretamente pelo hardware (o processador não entende bytecode nativamente).
- JVM (Java Virtual Machine): é a responsável por executar o bytecode, seja por interpretação e/ou por compilação JIT (Just-In-Time) para código de máquina durante a execução.
- Isso permite o princípio do “write once, run anywhere”: o mesmo bytecode pode rodar em diferentes sistemas (Windows, Linux, macOS etc.), desde que exista uma JVM compatível.
Por que as outras estão erradas, em resumo:
- (1) Falsa: bytecode não é executado diretamente pelo hardware.
- (3) Falsa: quem compila o código-fonte para bytecode é o javac; a JVM executa bytecode (podendo gerar código nativo via JIT), mas não é “o compilador do fonte diretamente para linguagem de máquina” como regra.
- (4) Falsa: o sistema operacional não interpreta bytecode; quem executa é a JVM.
- (5) Falsa: Java não executa o código-fonte diretamente no processador e não “ignora” o bytecode.