Boa tarde, espero que estejam bem ^^
Eu sei que o Bytecode é executado pela JVM e JRE.
Como o compilador vai GERAR o Bytecode, sendo que ele realiza a execução ?
Desde já agradeço atenção .
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa tarde, espero que estejam bem ^^
Eu sei que o Bytecode é executado pela JVM e JRE.
Como o compilador vai GERAR o Bytecode, sendo que ele realiza a execução ?
Desde já agradeço atenção .
Olá Mayara, tudo bem com você?
O compilador Java gera o bytecode seguindo o padrão:
1 - análise léxica: nesse momento, o compilador verifica as palavras-chave do seu código fonte, para verificar se encontra as palavras reservadas.
2 - análise sintática: nesse momento o compilador varre a sintaxe do código fonte, e procura se existe algum erro (um exemplo de erro sintático é a não colocação de um ; [ponto e vírgula] ao final de um comando Java.
3 - análise semântica: O compilador procura por erros "sutís", que não geram uma falha de imediato, como por exemplo tentar fazer a divisão de um inteiro por um float, ou divisões por 0.
Caso o código-fonte passe por todas essas análises, o código bytecode é gerado e aparecerá um arquivo com a extensão .class na sua pasta out do projeto.
Esse bytecode foi gerado a partir do compilador da máquina virtual java.
Para a execução do código bytecode, a JRE vai interpretar o bytecode gerado e executar o programa.
Sendo assim, a a JVM tem ferramentas para compilação e geração de bytecode, bem como a JRE, que é a ferramenta utilizada para rodar o código bytecode gerado pelo processo de compilação.
Para se aprofundar mais, recomendo esse artigo sobre o processo de compilação.
Me coloco à disposição caso tenha dúvidas e bons estudos!
Olá Arthur, Perfeito! Estou ótima ^^ Depois de pesquisar eu entendi esse processo do Bytecode ser gerado para só então pode ser executado na JVM. A sua resposta também esclareceu bastante a minha dúvida, vou dar uma olhada nesse artigo.
Muito obrigada pela ajuda ! ^^