JDK, JRE, JVM e JIT

Estudaremos quatro siglas importantes na compilação e interpretação de aplicações Java.

Avatar


31 de Agosto de 2022

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.
Figura 1: Onde uma classe Java é executada.

Figura 1: Onde uma classe Java é executada.

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.
Figura 2: JDK, JRE, JVM e Compilador JIT.

Figura 2: JDK, JRE, JVM e Compilador JIT.

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.

 

Figura 3: Plataforma Java Standard Edition.

Figura 3: Plataforma Java Standard Edition.

Então é isso!
[]s e até a próxima!
_________________________
Professor Rogerão Araújo

Avatar


31 de Agosto de 2022