Entendendo Java: JDK, JRE e JVM Explicados
Java JDK, JRE e JVM
Neste tutorial, você aprenderá sobre JDK, JRE e JVM. Também aprenderá as principais diferenças entre eles.
O que é JVM?
JVM (Java Virtual Machine) é uma máquina abstrata que permite que seu computador execute um programa Java.
Quando você executa o programa Java, o compilador Java primeiro compila seu código Java para bytecode. Então, a JVM traduz o bytecode em código de máquina nativo — um conjunto de instruções que a CPU do computador executa diretamente.
Java é uma linguagem independente de plataforma. Isso ocorre porque o código Java é compilado para a JVM, não para uma máquina física específica. Como a JVM executa bytecode neutro de plataforma, o Java roda consistentemente entre sistemas operacionais.

Quer um mergulho mais profundo? A Arquitetura da JVM Explicada.
O que é JRE?
JRE (Java Runtime Environment) é um pacote de software que agrupa as bibliotecas de classes Java, a JVM e outros componentes necessários para executar aplicações Java.
Na prática, o JRE é o superset da JVM — inclui tudo que a JVM precisa mais as bibliotecas de tempo de execução.

Se você só precisa executar programas Java, mas não desenvolvê-los, o JRE é suficiente. Você pode baixá-lo na página Java SE Runtime Environment 8 Downloads.
O que é JDK?
JDK (Java Development Kit) é o kit de ferramentas completo necessário para desenvolver aplicações Java. Quando você instala o JDK, o JRE é instalado automaticamente.
Além do JRE, o JDK agrupa ferramentas essenciais de desenvolvimento, como o compilador Java (javac), JavaDoc, o depurador Java e muito mais.

Pronto para codificar? Baixe o JDK e comece a construir seus projetos Java.
Relacionamento entre JVM, JRE e JDK

Java
- Variáveis e Literais em Java: Guia Completo
- Dominando Entrada e Saída em Java: Imprimir, Ler e Formatados Seus Dados
- Entendendo Expressões, Instruções e Blocos em Java
- Classes e Objetos em Java: Guia Prático
- Classes e Métodos Abstratos em Java: Guia Completo
- Dominando Classes Aninhadas e Internas em Java: Tipos, Exemplos e Boas Práticas
- Java throw vs throws: Dominando Tratamento de Exceções com Exemplos Práticos
- Dominando Autoboxing e Unboxing em Java: Exemplos Práticos e Boas Práticas
- Dominando Substituição de Strings em Java: replace(), replaceAll() e replaceFirst() Explicados
- Java String toLowerCase() & toUpperCase(): Converter Caixa de Texto com Consciência de Locale