Fala, meus consagrados! Tudo beleza com vocês?
Estudaremos quatro siglas importantes na compilação e interpretação de aplicações Java.
O Java Development Kit (JDK) é o conjunto de ferramentas necessárias para realizar o desenvolvimento de aplicações Java. O JDK inclui:
- Java Runtime Environment (JRE); e
- Ferramentas de programação:
- javac: compilador;
- java: interpretador;
- appletviewer: visualizador de applets;
- javadoc: gerador de documentação;
- jar: empacotador de aplicações.
Por sua vez, o Java Runtime Environment (JRE) é a plataforma Java. Ele é composto por dois componentes:
- Java Virtual Machine (JVM);
- Java Application Programming Interface (Java API):
- É uma biblioteca de componentes que possui vários recursos úteis e é utilizada para execução de aplicações Java.
ATENÇÃO!
É necessário instalar um JRE específico de uma plataforma, pois junto com ele vem uma JVM que saberá lidar com essa plataforma e conseguirá executar aplicações Java naquele ambiente.
Explicando a figura 1, temos:
- Na camada mais baixa, temos o hardware específico;
- Na camada mais acima, temos a plataforma Java ou o JRE;
- Junto com o JRE vem a JVM e a API Java; e
- Na última camada, temos a nossa aplicação Java.
Agora chegou a vez de conhecermos a Java Virtual Machine (JVM). A máquina virtual Java é a peça-chave para fornecer capacidade de multiplataforma para as aplicações Java. É o segredo da frase “Write once, run everywhere”.
A JVM está disponível em muitos sistemas operacionais diferentes. Com isso, os mesmos arquivos .class são capazes de funcionar nesses sistemas operacionais: Microsoft Windows, Solaris OS, Linux, Mac OS, etc.
A essa máquina virtual pode ser desenvolvida por qualquer organização, desde que siga as especificações para construção de uma JVM.
Ela é responsável por interpretar e executar o bytecode. Também possui a função de ser provedora de formas e meios de o aplicativo conversar com o sistema operacional.
No tempo de execução, a JVM:
- Carrega os arquivos de classe;
- Determina a semântica de cada bytecode individual; e
- Executa a computação apropriada.
Mas nem tudo são flores. O uso adicional do processador e da memória durante a interpretação significa que um aplicativo Java executa mais lentamente do que um aplicativo nativo. Nesse caso, para ajudar na melhora do desempenho de aplicativos Java no tempo de execução, utilizamos o Compilador Just-in-time (JIT).
O JIT é um componente do JRE que. Ele ajuda a melhorar o desempenho de programas Java, compilando bytecodes no código de máquina nativo no tempo de execução.
O compilador JIT é ativado quando um método Java é chamado e compila os bytecodes desse método no código de máquina nativo. Quando um método tiver sido compilado, a JVM chama o código compilado desse método diretamente, em vez de interpretá-lo.
ATENÇÃO!
Teoricamente, se a compilação não tiver requerido tempo de processador e uso de memória, compilar cada método pode permitir que a velocidade do programa Java se aproxime àquela de um aplicativo nativo.
Resumindo, temos (figura 2):
- A JVM é o coração da ideia da portabilidade usando a tecnologia Java;
- Ela vem junto com o JRE, que também é composto;
- Pela API Java; e
- Pelo Compilador JIT;
- O JRE deve ser instalado no ambiente dos usuários onde nossas aplicações Java rodarão;
- Para os desenvolvedores, instala-se o JDK;
- Que, além de trazer o JRE, inclui, entre outras ferramentas, o compilador de classes para bytecodes.
De forma geral, a plataforma JSE possui a seguinte estrutura (figura 3):
- O JDK que:
- Vai da linguagem Java até a JVM;
- Também inclui ferramentas e API’s para desenvolvimento de aplicações;
- O JRE que vai da API JSE até a JVM;
- Inúmeras plataformas onde podemos instalar:
- JDK, caso queiramos desenvolver utilizando nossa plataforma preferida; ou
- JRE, onde as aplicações serão executadas.
Então é isso!
[]s e até a próxima!
_________________________
Professor Rogerão Araújo