Pessoal, dando seguimento ao artigo anterior (Java: Compilação de classes Java – Parte I), vamos ver uma visão geral na compilação de classes na linguagem Java.

Na tecnologia Java, temos três entidades:

  • Morpheu (JDK);
  • Neo (JRE); e
  • Trinity (JVM).
JDK, JRE e JVM

JDK, JRE e JVM

Como essas entidades trabalham?

Teoria

Resumidamente:

  • Temos uma fase de compilação, onde:
    • Compilamos nossas classes Java (arquivos de extensão .java) com um compilador que vem junto com um JDK (o Morpheu), o kit de desenvolvimento Java;
    • As classes então são transformadas em bytecode (arquivos de extensão .class) pelo compilador;
      • Importante dizer que o bytecode é único, ou seja, não está em linguagem de máquina específica de uma plataforma;
  • E temos também uma fase de interpretação e execução, onde:
    • No cliente, onde nossa aplicação irá rodar, temos um JRE (Neo), o ambiente de execução Java, para o tipo de plataforma do cliente;
    • Junto com o Neo, vem quem? A Trinity, ou seja, a JMV, a máquina virtual Java (JVM);
      • Ela interpretará e executará o bytecode;
  • Para cada plataforma onde iremos rodar nossa aplicação, teremos um casal Neo e Trinity, ou seja, JRE e JVM.
Visão geral de desenvolvimento com Java

Visão geral de desenvolvimento com Java

Não precisamos recompilar a aplicação para que possamos rodá-la em plataformas diferentes. Compilamos uma vez nossas classes para termos um único conjunto de bytecode e cada JVM para uma plataforma saberá interpretar e executar esse conjunto na plataforma específica.

Assim, meus amigos, a tecnologia Java nos oferece a portabilidade! Escreva sua aplicação apenas uma vez e execute-a em qualquer lugar!

O JRE ou ambiente de execução Java possui:

  • A JVM; e
  • API (Java Application Programming Interface):
    • É uma biblioteca de componentes que:
      • Possui vários recursos úteis; e
      • É utilizada para execução de aplicações Java.

É necessário instalar uma JRE específica de uma plataforma, pois junto com ela vem uma JVM que:

  • Saberá lidar com essa plataforma; e
  • Conseguirá executar aplicações Java naquele ambiente.

Visualmente, temos:

  • Na camada mais baixa, temos o hardware;
  • Na camada mais acima, temos a plataforma Java ou o JRE (o Neo);
    • Junto com o JRE vem a JVM (a Trinity) e a API Java; e
  • Na camada mais acima, temos a nossa aplicação Java.
JRE

JRE

A máquina virtual Java é o coração de toda essa ideia de portabilidade! Ela é responsável por interpretar e executar o bytecode. É a provedora de formas e meios de o aplicativo conversar com o sistema operacional.

Questões

[FGV 2012 Senado Federal – Prova anulada – Análise de Sistemas – Questão 55] Observe a figura abaixo, associada à linguagem Java.

QuestoaFGV

[FGV 2012 Senado Federal – Prova anulada – Análise de Sistemas – Questão 55] Para permitir que um mesmo programa seja executado em vários sistemas operacionais, a plataforma java gera códigos genéricos *.class e os traduz para o código da máquina local, *.exe ou *.bin, somente no momento da execução. Nesse contexto, os códigos específicos para a máquina virtual Java, e não para a máquina local, recebe o nome de:

  • [A] microcode.
  • [B] scriptcode.
  • [C] framecode.
  • [D] bytecode.
  • [E] javacode.

Gabarito: letra D.

[FCC 2010 TRT 9ª Região – Técnico Judiciário – Especialidade Tecnologia da Informação – Questão 36] O JVM mais o núcleo de classes da plataforma Java e os arquivos de suporte formam o

  • [A] o J2EE.
  • [B] o JDK.
  • [C] o JRE.
  • [D] uma JSP.
  • [E] uma API.

Gabarito: letra C.

A Trinity sempre vem com o Neo! =D

[FCC 2007 TJ/PE – Analista Judiciário – Analista de Suporte – Questão 25] O código Java compilado é gerado em arquivo com extensão

  • [A] .ser
  • [B] .jar
  • [C] .java
  • [D] .html
  • [E] .class

Gabarito: letra E.

O compilador vem com o Morpheu! =D

A fuga do Batman e Robin em várias perspectivas!

batman01
batman02
batman08
batman09
batman10
batman11

[]s e até a próxima!

_________________________
Sou eu!!!Rogério Araújo

Blog: https://rogerioaraujo.wordpress.com/
Gmail: rgildoaraujo@gmail.com
Twitter: http://twitter.com/rgildoaraujo
LinkedIn: http://br.linkedin.com/in/rgildoaraujo
Grupo de estudo no ITnerante: http://www.itnerante.com.br/group/dev