Leia o texto a seguir:
“As primeiras implementações de Java eram todas híbridas. Seu formato intermediário, chamado de bytecode, fornece portabilidade para qualquer máquina que tenha um interpretador de bytecodes e um sistema de tempo de execução associado. Juntos, eles são chamados de Máquina Virtual Java. Existem agora sistemas que traduzem bytecodes Java em código de máquina, de forma a possibilitar uma execução mais rápida.”
Fonte: SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018.
Considerando o trecho acima, avalie as afirmações abaixo:
I. O código Java é interpretado pela Máquina Virtual, gerando como resultado o bytecode.
II. O bytecode é interpretado pela Máquina Virtual, sendo traduzido para instruções nativas.
III. O código Java é compilado pelo JIT, gerando bytecode para ser interpretado pela Máquina Virtual.
IV. O bytecode é compilado pelo JIT, gerando código de máquina nativo.
É correto o que se afirma em:
Grupo de escolhas da pergunta
III e IV, apenas.
I e II, apenas.
II e IV, apenas.
I e IV, apenas.
II e III, apenas.
Respostas
Resposta:II e IV, apenas.
Explicação:
A afirmativa I é falsa, pois o código Java é traduzido uma vez para bytecode, um código binário “fictício”. Esse processo corresponde a uma compilação, porém, tendo como alvo a Máquina Virtual, e não o binário nativo.
A afirmativa II é verdadeira, pois uma das formas de lidar com o bytecode é interpretando-o, um processo realizado pela Máquina Virtual Java. Esse processo é menos eficiente e deve ser repetido todas as vezes que o programa for executado.
A afirmativa III é falsa, pois o código Java é compilado para bytecode, o qual pode ser interpretado pela Máquina Virtual. Alternativamente, o bytecode (e não o código Java original) atualmente é compilado pelo compilador JIT (Just In Time) em sua primeira execução em uma máquina, gerando um código binário nativo.
A afirmativa IV é verdadeira, pois, alternativamente, o programa pode passar por uma segunda compilação, onde o bytecode é traduzido permanentemente para código nativo de máquina. Isso é realizado pelo compilador JIT (Just-In-Time), que executará na primeira execução do programa e irá gerar código nativo e otimizado especificamente para a plataforma onde ele está executando.