Código-fonte, bytecode e JVM

Fundamentos Java: O código-fonte (.java) é compilado em bytecode (.class) e interpretado pela Java Virtual Machine (JVM).

Como funciona?

Funciona assim: Você escreve seu código em um arquivo com extensão .java. Através do programa de compilação javac, disponível no JDK (Kit de desenvolvimento Java), seu código-fonte é convertido para outro arquivo chamado bytecodes, passando a ter a extensão .class. O bytecode é uma linguagem de máquina que pode ser interpretada pela Java Virtual Machine (JVM).

A vantagem desta tríade se resume na frase “Escreva uma vez, execute em qualquer lugar”. Aliás, este foi o slogan da Sun MicroSystems para demonstrar os benefícios multi-plataforma da Linguagem Java: “Write once, run anywhere” (WORA). Note, portanto, que qualquer plataforma (Linux, Windows, Solaris, etc) dotada de uma JVM será capaz de interpretar os bytecodes originados da compilação do seu código-fonte.

Contudo, quando concebida, a JVM chegava a ser vinte vezes mais lenta que outras linguagens, além de ter programas extensos que consumiam muitos recursos. Atualmente, isto foi amenizado pela evolução tecnológica (capacidade de processamento e memória) e por compiladores capazes de converter bytecodes em linguagem de máquina nativa, como o Just In Time compiler (JIT), tornando os programas mais rápidos.

Desta forma, o interpretador identifica trechos que são repetidamente interpretados e repassa ao JIT para que compile esses bytecodes em linguagem de máquina, do processador que está executando o programa. Perceba que o JIT trabalha em tempo de execução, no dispositivo em que o usuário está rodando o programa Java e apenas compila trechos importantes, não o programa por inteiro.

Este assunto pode ser cobrado da seguinte forma:

Questão

FCC 2009 TRT 15ª Região – Analista Judiciário – TI

No âmbito da linguagem Java, considere:

I. Edição é a criação do programa, que também é chamado de código Bytecode.

II. Compilação é a geração de um código intermediário chamado fonte, que é um código independente de plataforma.

III. Na interpretação, a máquina virtual Java ou JVM analisa e executa cada instrução do código Bytecode.

IV. Na linguagem Java a interpretação ocorre apenas uma vez e a compilação ocorre a cada vez que o programa é executado.

Está correto o que consta em
a) I, II, III e IV.
b) II e IV, somente.
c) III e IV, somente.
d) IV, somente.
e) III, somente.

Resposta

(I) Para criar o programa Java, editamos o código-fonte, e não o bytecode.
(II) Quando compilamos geramos o bytecode, e não o fonte.
(III) A JVM realmente interpreta o bytecode.
(IV) Na verdade, a compilação (código-fonte > bytecode) ocorre uma vez, e a interpretação (JVM) sempre que o programa é executado. Portanto, letra e) é o gabarito!

Fontes

http://www.dm.ufscar.br/~waldeck/curso/java/
http://comoaprenderjava.com/blog/compilacao-jit-e-o-caminho-do-meio/

Total de acessos: 3632

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *