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