Skip to main content
Back to blog

Qual a diferença entre JDK, JRE e JVM

O Java é uma das linguagens de programação mais populares e poderosas, em grande parte devido à sua capacidade de ser multi-plataforma. Mas, para quem está começando, entender as diferenças entre JDK, JRE e JVM pode ser uma grande confusão. Neste post, vamos explicar de forma clara e simples o que são essas siglas, qual o papel de cada componente e como elas trabalham juntas para permitir que o Java seja executado em diferentes sistemas operacionais com facilidade. Vamos explorar o processo básico de como o Java funciona, começando com a escrita do código-fonte até a execução final, além de esclarecer a hierarquia entre o JDK, JRE e JVM. Entenda por que o Java tem a capacidade única de rodar em qualquer lugar, e como cada um desses componentes contribui para tornar o desenvolvimento e execução de programas Java mais eficiente e flexível.

Felipe de Melo Pereira
4 min read
Qual a diferença entre JDK, JRE e JVM

Uma grande confusão para quem está começando no mundo Java é entender a diferença entre JDK, JRE e JVM. Afinal, o que significam essas siglas e por que é importante saber como cada uma delas funciona? Neste post, vamos esclarecer de uma vez por todas como elas se relacionam e como tornam o Java uma das linguagens mais versáteis e poderosas.

O que torna o Java especial?

Uma das principais razões para o sucesso do Java, desde seu lançamento há mais de 20 anos, é sua capacidade de ser multi-plataforma. Isso é possível graças ao conceito WORA (Write Once, Run Anywhere), que significa "Escreva uma vez, execute em qualquer lugar". Com o Java, é possível escrever um único código que pode ser executado em diferentes sistemas operacionais, como Windows, Linux e macOS, sem necessidade de modificações.

Essa "mágica" do Java só é possível graças à combinação do JDK, JRE e JVM. Vamos entender o papel de cada um.


O fluxo de funcionamento do Java

O processo básico para criar e executar um programa Java é o seguinte:

  1. Você escreve o código-fonte em um arquivo com extensão .java.

  2. Você usa o JDK para compilar o código-fonte, gerando um arquivo de bytecode com extensão .class.

  3. Para executar o programa, a JVM lê o bytecode (.class) e utiliza as bibliotecas padrão fornecidas pelo JRE.

  4. Pronto, seu programa está rodando!


Entendendo os componentes

JVM — Java Virtual Machine (Máquina Virtual do Java)

A JVM é responsável por executar o bytecode gerado pelo compilador Java. Sua principal característica é permitir que o código Java seja executado em qualquer sistema operacional que tenha uma JVM instalada. Isso é o que torna o Java uma linguagem multi-plataforma.

Além disso:

  • A JVM é independente da linguagem. Isso significa que você pode rodar bytecode gerado por outras linguagens, como Scala, Groovy, JRuby, Jython, entre outras.

  • Ela é, na verdade, uma especificação. Isso permite que diferentes organizações implementem sua própria JVM, desde que sigam as especificações definidas.

Como funciona?

  • Ao instalar a JVM no seu sistema operacional, ela passa a ser capaz de interpretar e executar o bytecode em qualquer ambiente.

  • A JVM também oferece funcionalidades avançadas, como otimização de desempenho (JIT Compiler) e gestão de memória (garbage collection).


JRE — Java Runtime Environment (Ambiente de Execução Java)

O JRE fornece tudo o que é necessário para executar programas Java:

  1. Inclui a JVM.

  2. Fornece as bibliotecas padrão do Java (também chamadas de API core), como o pacote java.lang, que contém a classe String.

  3. Disponibiliza ferramentas para executar programas Java, como o java.exe, que permite rodar arquivos .class.

Quando você roda o comando java NomeDoPrograma, é o JRE que fornece o programa responsável por interpretar e executar o bytecode.


JDK — Java Development Kit (Kit de Desenvolvimento Java)

O JDK é o kit completo para desenvolvimento em Java. Ele contém:

  1. O compilador (javac), que converte arquivos .java em bytecode (.class).

  2. Ferramentas para depuração e análise de desempenho.

  3. Um JRE embutido, para que você possa executar os programas que desenvolve.

Quando você roda o comando javac NomeDoPrograma.java, é o JDK que fornece o compilador responsável por transformar o código-fonte em bytecode.


A relação entre JDK, JRE e JVM

É importante entender que:

  • O JDK inclui o JRE, e o JRE inclui a JVM.

  • O JDK é necessário para desenvolvimento, enquanto o JRE é suficiente apenas para executar programas.

Aqui está uma visão geral da hierarquia:

scss
CopiarEditar
JDK (Kit de Desenvolvimento)
 └── JRE (Ambiente de Execução)
      └── JVM (Máquina Virtual)


Conclusão

Compreender a diferença entre JDK, JRE e JVM é fundamental para quem está começando a estudar Java. Esses três componentes trabalham juntos para fornecer um ambiente robusto, flexível e multi-plataforma, que é a base do sucesso da linguagem.

Se você ainda tiver dúvidas ou quiser compartilhar sua experiência com Java, fique à vontade para comentar abaixo. Vamos aprender juntos!

Referencias:

https://docs.oracle.com/en/java/