Diferença entre JDK, JRE e JVM

**A diferença entre JDK, JRE e JVM é uma das perguntas populares em entrevistas. Você também pode ser solicitado a explicar JDK vs JRE vs JVM.**

JDK, JRE e JVM são conceitos fundamentais da linguagem de programação Java. Não usamos esses conceitos diretamente na programação, mas como desenvolvedor Java, é importante conhecê-los.

1. **JDK (Java Development Kit):**
O JDK é o componente central do ambiente Java e fornece todas as ferramentas, executáveis e binários necessários para compilar, depurar e executar um programa Java. O JDK é uma aplicação específica da plataforma, razão pela qual existem instaladores separados para Windows, Mac e sistemas Unix. Podemos dizer que o JDK é um conjunto completo do JRE, pois inclui o JRE com o compilador Java, o depurador e as classes principais.

2. **JVM (Java Virtual Machine):**
A JVM é uma máquina virtual que executa o código Java compilado. Ela fornece um ambiente de execução para as aplicações Java. A JVM é independente da plataforma e é a responsável por executar o bytecode gerado durante a compilação. Ela atua como uma camada de abstração entre o código Java e o sistema operacional.

Esses conceitos são essenciais para entender a estrutura e o funcionamento do ambiente de desenvolvimento Java.

Diferença entre JDK, JRE e JVM

JDK, JRE e JVM são conceitos fundamentais da linguagem de programação Java. Não usamos esses conceitos diretamente na programação, mas como desenvolvedor Java, é importante conhecê-los.

1. JDK

O Kit de Desenvolvimento Java, conhecido como JDK, é o componente central do ambiente Java e fornece todas as ferramentas, executáveis e binários necessários para compilar, depurar e executar um programa Java. O JDK é um software específico da plataforma, e é por isso que temos instaladores separados para Windows, Mac e sistemas Unix. Podemos dizer que o JDK é o conjunto completo do JRE, pois inclui o JRE com o compilador Java, o depurador e as classes principais.

2. JVM

A JVM é o coração da linguagem de programação Java. Quando executamos um programa Java, a JVM é responsável por converter o código de bytes para o código específico da máquina. A JVM também é dependente da plataforma e fornece funções principais do Java, como gerenciamento de memória, coleta de lixo, segurança, etc. A JVM é personalizável e podemos usar opções Java para personalizá-la. Por exemplo, alocar memória mínima e máxima para a JVM. A JVM é chamada de virtual porque fornece uma interface que não depende do sistema operacional subjacente e do hardware da máquina. Essa independência de hardware e sistema operacional permite que os programas Java sejam escritos uma vez e executados em qualquer lugar.

3. JRE

O JRE é a implementação da JVM. Ele fornece uma plataforma para executar programas Java. O JRE consiste na JVM, binários Java e outras classes para executar qualquer programa com sucesso. O JRE não contém ferramentas de desenvolvimento, como compilador Java, depurador, JShell, etc. Se você apenas deseja executar um programa Java, pode instalar apenas o JRE. Você não precisa do JDK porque não há necessidade de desenvolvimento ou compilação de código-fonte Java. Agora que temos uma compreensão básica do JDK, JVM e JRE, vamos analisar as diferenças entre eles.

JDK vs JRE vs JVM

Vamos dar uma olhada em algumas das diferenças importantes entre JDK, JRE e JVM.

  1. JDK é para fins de desenvolvimento, enquanto JRE é para executar programas Java.
  2. Tanto o JDK quanto o JRE contêm a JVM para que possamos executar nossos programas Java.
  3. A JVM é o coração da linguagem de programação Java e proporciona independência de plataforma.

Compilador Just-in-time (JIT)

Às vezes, você encontrará JIT ao lado da JVM, JDK e JRE em livros didáticos. JIT é parte da JVM que otimiza o processo de conversão de bytecode para linguagem específica da máquina. Ele compila códigos bytecode semelhantes ao mesmo tempo e reduz o tempo total necessário para a compilação do bytecode para a linguagem específica da máquina.

Source:
https://www.digitalocean.com/community/tutorials/difference-jdk-vs-jre-vs-jvm