A Máquina Virtual Java - Parte do Capítulo 2 (Aprendendo Fácil a Programar em Java SE - Teoria e Prática)
Java Runtime Environment (JRE) significa Ambiente de Tempo
de Execução Java. O JRE é um conjunto de programas que possibilita executar
aplicações Java. O centro do JRE é a Máquina Virtual Java ou Java Virtual
Machine (JVM) (Figura 2.1 a seguir).
É pela JVM que o Java nos possibilita uma das suas
características mais impressionantes, a portabilidade. Principais
características:
·
O programa sempre será compilado para byte-code;
·
O byte-code
é específico para o interpretador de byte-codes
Java, ou seja, para nenhum sistema operacional em particular;
·
A JVM, é que executa um programa Java, rodando
assim o arquivo byte-code dentro de
qualquer sistema operacional compatível a ela.
Existe uma JVM diferente para cada plataforma, na qual
a tecnologia Java pode ser executada. Deverá existir uma JVM instalada no
computador no qual será executado um programa Java.
Figura 2.1 – Esquema de compilação e execução de um programa em Java.
Bibliotecas de classe do Java
Com o Java você pode por si só, criar cada classe e método
de que precisa para formar seus programas Java. A comunidade de programadores
Java pelo mundo é quem mais tira proveito das ricas coleções de classes e
métodos existentes nas bibliotecas de classe Java, compartilhando-as, também
conhecidas como Java Application Programming Interfaces (API).
Em nossos projetos, faremos uso de uma biblioteca muito
difundia no meio da programação Java o drive JDBC do MySQL, as demais que
iremos utilizar o como swing por exemplo o próprio ambiente de desenvolvimento
se encarregará de fazer o trabalho pesado de carrega-la para nós. Esse reuso de
classes é uma boa dica para aumentar o desempenho de programa, porque elas são
cuidadosamente escritas para executar de modo eficiente suas funções. Sem falar
na redução tempo de criação do seu projeto.
Uma das maiores dificuldades na programação Java de
alto nível para os desenvolvedores iniciantes, é saber lidar com essa gama de
opções que as Java API dispõem, muitas vezes são o principal motivo de confusão
dos iniciantes. Quando sentir dificuldade de encontrar alguma API, haja como
fizemos no capítulo 1, procure no repositório Maven na Internet.
Fases de criação e execução de um projeto Java
Por padrão, existem cinco fases: criar (editar), compilar
(traduzir), carregar, verificar e executar. Nós as discutiremos no contexto do
Java SE 8 Development Kit (JDK).
Fase 1: criando um programa
Primeiro passo é criar o código-fonte. O Java não lhe obriga
a fazer uso de uma ferramenta especifica de edição de texto para a geração de
seus códigos. Até mesmo o NotePad.exe
do Windows ou mesmo o simples Nano
do Linux, podem ser capazes de gerar os arquivos .java, que conterão as instruções organizadas em um arquivo fonte
que tem o objetivo de dizer ao compilador o que o computador tem que fazer.
Para a geração dos códigos fontes fora do IDE NetBeans,
faremos uso do NotePad++, no decorrer dos exemplos a seguir neste guia.
Figura 2.2 – Demonstração fase 1 – criação de arquivo .java.
Na Figura 2.2 acima, demonstra a criação de um arquivo
chamado Oi.java, logo em seguida
sendo gravado no disco. Este trabalhado também pode ser feito com os Ambientes
e Desenvolvimento Integrados – IDE, como o NetBeans por exemplo.
Os arquivos de código-fonte Java recebem o mesmo nome da
classe Java criada dentro dele, deve ter a extensão .java, assim fica fácil identificar
um arquivo contendo código-fonte Java.
Fase 2: compilar
Nesta fase, entra em ação o compilador java, o comando javac . O seu uso sobre o código-fonte
criado, faz a tradução da linguagem de alto nível para uma linguagem de máquina.
A seguir segue um exemplo, da compilação do programa Oi.java.
javac Oi.java
Concluído o processo de compilação um arquivo .class será gerado, neste caso um
arquivo Oi.class que contém a versão
compilada.
Figura 2.3 – Demonstração da Fase 2 – compilador traduzindo o código.
Conforme Figura 2.3 exibida anteriormente, o compilador Java
faz a tradução do código-fonte Java em byte-codes.
A JVM reconhece os byte-codes e os executa. Os byte-code
são independentes de plataforma. Abdicam da necessidade recompilar o código quando
forem executados em arquiteturas diferentes, são portáveis. Havendo somente a
necessidade de ter uma JVM que entende a versão do Java na qual os byte-codes foram
compilados
A JVM é invocada pelo comando java. Por exemplo, para
executar um aplicativo Java chamado Oi,
recém compilado, você digitaria como no exemplo abaixo.
java Oi
Quando você executar o comando java (JVM), inicia-se as
próximas fases.
Fase 3: carregando um programa na memória
Na Fase 3, a JVM armazena o programa na memória para executá-lo.
O carregador de classe lê o arquivo .class
que contém os byte-codes a partir do disco e os coloca na memória, conforme
demonstrado na Figura 2.4 a seguir.
Figura 2.4 – Fase 3 o carregador de classe levando os byte-codes para a memória RAM..
Fase 4: verificação de byte-code
Nesta fase, entra em ação o verificador de byte-codes, que
confirma se todos os byte-codes são válidos e não violam restrições de
segurança do Java. Confira o exemplo na Figura 2.5 a seguir.
Figura 2.5 – Fase 4 – o verificador de byte-code em ação.
Java impõe uma forte segurança para certificar-se de
que os programas Java que chegam pela rede não danificam os arquivos ou o
sistema (como vírus e worms de computador).
Fase 5: execução
Para executar o programa, na fase 5 a JVM lê os byte-codes e
os compila no momento certo (Just-In-Time) para a linguagem que o computador em
uso possa entender.
Figura 2.6 – Fase 5 o aplicativo em fim é executado pela JBM na memória RAM.
Na Figura acima temos o Duke, o mascote do Java.
Desta forma, podemos afirmar que os programas feitos em Java
realmente passam por dois processos de compilação, a primeira quando o
código-fonte é traduzido em byte-codes (para a portabilidade entre JVMs em diferentes
plataformas de computador) e outra durante a execução, quando os byte-codes são
traduzidos em linguagem de máquina para o computador real no qual o programa é
executado.
A máquina virtual (virtual Machine — VM) é um
aplicativo de software que simula um computador, mas oculta o sistema
operacional e o hardware subjacentes dos programas que interagem com ela. Se a
mesma máquina virtual é implementada em muitas plataformas de computador, os
aplicativos escritos para ela podem ser utilizados em todas essas plataformas.
A JVM é uma das máquinas virtuais mais utilizadas. O .NET da Microsoft utiliza
uma arquitetura de máquina virtual semelhante.
Comentários
Postar um comentário