JDK versus JRE
Entenda as diferenças fundamentais entre JRE e JDK, seus componentes e quando usar cada um no desenvolvimento e execução de aplicações Java.
Introdução: Dois Lados da Mesma Moeda
Uma das primeiras confusões que iniciantes em Java enfrentam é a diferença entre JRE e JDK. Ambos são essenciais para o ecossistema Java, mas servem a propósitos fundamentalmente diferentes. Compreender essa distinção é crucial para configurar corretamente seu ambiente de desenvolvimento e entender como as aplicações Java funcionam.
Vamos começar com uma analogia simples:
JRE é como o motorista que sabe dirigir um carro
JDK é como o mecânico que não só dirige, mas também constrói e conserta carros
Java Runtime Environment (JRE) Ambiente de Execução Java
O JRE é o ambiente necessário para executar aplicações Java. Se você apenas quer rodar programas Java (como um jogo, uma aplicação de desktop, ou um serviço web), o JRE é tudo que precisa. Ele fornece o "ambiente de execução" onde o código Java compilado pode ser executado.
Componentes do JRE
Explicação dos componentes:
Java Virtual Machine (JVM) é o coração do JRE. É a JVM que:
Lê e interpreta o bytecode Java (arquivos
.class)Gerencia a memória através do Garbage Collector
Otimiza a execução com o compilador JIT (Just-In-Time)
Fornece a abstração de "escreva uma vez, execute em qualquer lugar"
Class Loader (Carregador de Classes) é responsável por:
Carregar classes Java na memória quando são necessárias
Verificar a integridade do bytecode (segurança)
Gerenciar o namespace de classes para evitar conflitos
Implementar o mecanismo de delegação (hierarquia de class loaders)
Bibliotecas Padrão (Java Class Libraries) é um conjunto abrangente de bibliotecas pré-compiladas que fornecem funcionalidades comuns:
java.lang: Classes fundamentais (String, Math, System, Object)
java.util: Coleções (List, Map, Set), datas, utilitários
java.io: Operações de entrada/saída (arquivos, streams)
java.net: Funcionalidades de rede
java.sql: Acesso a bancos de dados
E muitas outras (mais de 4.000 classes no total)
Quando Usar o JRE
Você é um usuário final que precisa executar uma aplicação Java
Você está em um ambiente de produção onde apenas a execução é necessária
Seu servidor precisa rodar aplicações Java (mas não desenvolvê-las)
Você está testando uma aplicação já compilada
Exemplo prático
Quando você instala o Minecraft (escrito em Java) no seu computador, você precisa do JRE para executá-lo, mas não precisa do JDK.
Java Development Kit (JDK) Kit de Desenvolvimento Java
O JDK é o pacote completo para desenvolver aplicações Java. Ele inclui o JRE e adiciona todas as ferramentas necessárias para criar, compilar, depurar e documentar código Java.
Componentes do JDK
Além do JRE, o JDK inclui:
Compilador Java (
javac): A ferramenta mais importante do JDK. Converte código-fonte Java (.java) em bytecode (.class).Ferramentas de Desenvolvimento:
java: O launcher de aplicações (também presente no JRE)javadoc: Gera documentação automática a partir de comentários no códigojar: Cria e manipula arquivos JAR (Java ARchive)jdb: Depurador Javajavap: Desmontador de bytecode (mostra o que está dentro de um.class)
Utilitários Avançados:
jconsole: Monitoramento e gerenciamento de aplicações Javajvisualvm: Análise de desempenho e profilingjstack: StackTrace de threads em execuçãojmap: Análise de uso de memória (heap dump)
APIs de Desenvolvimento: Inclui ferramentas e APIs para desenvolvimento que não estão no JRE, como o compilador de anotações (
javac -processor).
Quando Usar o JDK
Você é um desenvolvedor criando aplicações Java
Você precisa compilar código-fonte Java
Está depurando ou analisando aplicações Java
Precisa criar documentação automática para seu código
Está empacotando aplicações para distribuição
Exemplo prático
Quando você está escrevendo um programa Java no Eclipse, IntelliJ ou VS Code, você precisa do JDK instalado para compilar e testar seu código.
Comparação Direta: JRE versus JDK
Propósito
Executar aplicações Java
Desenvolver e executar aplicações Java
Tamanho
Menor (apenas runtime)
Maior (inclui ferramentas de desenvolvimento)
Contém JVM?
Sim
Sim (através do JRE incluso)
Contém compilador?
Não
Sim (javac)
Contém bibliotecas?
Bibliotecas de runtime
Bibliotecas de runtime + desenvolvimento
Para usuários finais?
Sim
Não (a menos que sejam desenvolvedores)
Para desenvolvedores?
Não (insuficiente)
Sim (essencial)
Relação de Inclusão
É importante entender que o JDK contém o JRE.
Quando você instala o JDK:
Você obtém uma pasta
jredentro da instalação do JDKTodas as funcionalidades do JRE estão disponíveis
Além disso, você ganha todas as ferramentas de desenvolvimento
Matematicamente: JDK = JRE + Ferramentas de Desenvolvimento
Evolução Histórica e Moderna
JDK 9 em Diante: A Modularização
A partir do Java 9, com a introdução do sistema de módulos (Project Jigsaw), a distinção JRE/JDK tornou-se menos rígida:
JRE Tradicional Descontinuado: A Oracle parou de distribuir JREs separados para Java 11+
jlink- Criando Runtimes Personalizados: Desenvolvedores podem agora criar suas próprias "JREs" personalizadas contendo apenas os módulos necessários para sua aplicaçãoJDK como Runtime Único: Em muitos casos, apenas o JDK é distribuído, e os usuários finais recebem runtimes específicos da aplicação
Distribuições Modernas
Hoje em dia, você encontrará principalmente:
JDK Completo: Para desenvolvedores
JRE Embarcado/Personalizado: Para aplicações específicas (criadas com
jlink)Server JRE (Histórico): Uma variação otimizada para servidores (descontinuada)
Como Escolher e Instalar
Para Desenvolvedores
Baixe e instale o JDK (OpenJDK, Oracle JDK, Amazon Corretto, etc.)
Configure a variável de ambiente
JAVA_HOMEapontando para a pasta do JDKAdicione
%JAVA_HOME%\bin(Windows) ou$JAVA_HOME/bin(Linux/macOS) ao seu PATH
Para Usuários Finais/Produção
Se a aplicação fornecer um runtime próprio, use-o
Caso contrário, você pode precisar instalar um JDK e usá-lo apenas como runtime
Alternativamente, use distribuições que incluam um Java bundled
Verificando sua Instalação
Conclusão: Saber Escolher é Fundamental
Compreender a diferença entre JRE e JDK vai além de mera curiosidade técnica:
Economia de Recursos: Em ambientes de produção com restrições de espaço, usar apenas o JRE (ou runtime personalizado) pode ser mais eficiente.
Segurança: Instalar apenas o necessário (JRE para usuários finais) reduz a superfície de ataque.
Desempenho: Runtimes personalizados (criados com
jlink) podem ser menores e iniciar mais rápido.Manutenção Simplificada: Saber que o JDK já inclui tudo que o JRE oferece evita instalações duplicadas.
Para desenvolvedores iniciantes: instale o JDK. Ele contém tudo que você precisa para começar a programar em Java. Conforme você avança, entenderá quando e como criar runtimes específicos para suas aplicações, otimizando tamanho e desempenho.
Lembre-se: você desenvolve com o JDK, mas pode executar com o JRE (que já vem incluso no JDK). Essa compreensão clara pavimenta o caminho para um ambiente de desenvolvimento Java bem configurado e eficiente.
Last updated