Na linguagem de programação Java:
- O código fonte é escrito em arquivos texto com a extensão .java.
- Esses arquivos são então compilados em arquivos .class pelo compilador javac;
- Um arquivo .class:
- Não contém código nativo para um processador específico;
- Contém bytecodes, que é uma linguagem da Máquina do Virtual Java (JVM); e
- É interpretado e executado pelo comando java para criar uma instância da JVM.
Detalhando o processo, temos duas fases (figuras 1 e 2):
- Fase de compilação das classes Java;
- Fase de interpretação e execução dos bytecodes.
Na fase de compilação, compilamos nossas classes Java (arquivos texto de extensão .java) com um compilador Java (chamado pelo comando javac seguido do nome do arquivo .java) que vem junto com um JDK (kit de desenvolvimento Java). O resultado da compilação das classes Java são arquivos de extensão .class que contém bytecodes.
Os bytecodes gerados a partir de uma classe são únicos: não estão em linguagem de máquina específica de uma plataforma.
Temos agora a fase de interpretação e execução dos bytecodes (contidos nos arquivos de extensão .class). Nessa fase, os bytecodes são interpretados e executados pela JVM (Máquina Virtual Java) no cliente, onde nossa aplicação irá rodar. Usamos o comando java seguido do nome do arquivo .class para a interpretação e execução dos bytecodes.
Para termos a nossa JVM, é necessário instalar no cliente um JRE (ambiente de execução Java) para o tipo específico da plataforma desse cliente. O JRE conterá a JVM.
Figura 1: Compilação das classes Java e interpretação e execução dos bytecodes.
O JRE traz consigo a JVM. Esta interpretará e executará os bytecodes (através do comando java). Para cada plataforma onde iremos rodar nossa aplicação, teremos JRE e JVM específicos daquela plataforma.
Figura 2: Portabilidade com a tecnologia Java.
Não precisamos recompilar a aplicação para que possamos rodá-la em plataformas diferentes. Compilamos uma vez nossas classes para termos um conjunto único de bytecode e cada JVM para uma plataforma específica saberá interpretar e executar esse conjunto nessa plataforma.
Assim, meus amigos, a tecnologia Java nos oferece a portabilidade! Escreva sua aplicação apenas uma vez e execute-a em qualquer lugar!
Figura 3: Arquivos .java e .class.
Questões de concursos
[FGV 2013 TJ/AM – Assistente Judiciário – Programador] Observe a figura a seguir, que representa o ambiente Java.
O arquivo.class não contém código que é nativo para seu processador, mas sim a linguagem de máquina da Java Virtual Machine (Java VM), conhecida por
[A] framecode.
[B] bytecode.
[C] bitcode.
[D] zipcode.
[E] microcode.
Comentários:
O arquivo .class não contém código nativo para um processador específico. Ele contém bytecodes, que é uma linguagem da Máquina do Virtual Java (JVM) e é interpretado e executado pelo comando java para criar uma instância da JVM.
Gabarito: letra b.
[FGV 2012 Senado Federal – Analista Legislativo – Análise de Suporte de Sistemas] Observe a figura abaixo, associada à linguagem Java.
Para permitir que um mesmo programa seja executado em vários sistemas operacionais, a plataforma java gera códigos genéricos *.class e os traduz para o código da máquina local, *.exe ou *.bin, somente no momento da execução.
Nesse contexto, os códigos específicos para a máquina virtual Java, e não para a máquina local, recebe o nome de:
[A] microcode.
[B] scriptcode.
[C] framecode.
[D] bytecode.
[E] javacode.
Comentários:
A questão trouxe uma figura parecida com a figura 1.2. Na linguagem de programação Java:
- O código fonte é escrito em arquivos texto com a extensão .java;
- Esses arquivos são então compilados em arquivos .class pelo compilador javac;
- Um arquivo .class:
- Não contém código nativo para um processador específico;
- Contém bytecodes, que é uma linguagem da Máquina do Virtual Java (JVM); e
- É interpretado e executado pelo comando java para criar uma instância da JVM.
Na imagem, o JDK contém o compilador Java (chamado pelo comando javac). Também temos o JRE na imagem. Nesse caso, como sabemos, o JRE traz a JVM, que irá interpretar e executar os bytecodes.
Só uma observação: o resultado da compilação em bytecodes de um arquivo .java é um arquivo .class e não arquivo .jar, como está na imagem. Os arquivos .jar são pacotes que contêm vários arquivos .class.
Agora, respondendo a questão, ela fala dos bytecodes.
Letra d.
Espero que tenham gostado!
Forte abraço e até a próxima jornada!
_________________________
Professor Rogerão Araújo
Clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
Clique no link abaixo e inscreva-se gratuitamente:
Participe da conversa