JDK vs JRE vs JVM: Principais diferenças

O que é JDK?

JDK é um ambiente de desenvolvimento de software usado para fazer miniaplicativos e aplicativos Java. A forma completa do JDK é o Java Development Kit. Os desenvolvedores Java podem usá-lo no Windows, macOS, Solaris e Linux. O JDK os ajuda a codificar e executar programas Java. É possível instalar mais de uma versão do JDK no mesmo computador.

Neste tutorial, você aprenderá:

O que é JRE?

JRE é uma parte de um software projetado para executar outro software. Ele contém as bibliotecas de classe, classe do carregador e JVM. Em termos simples, se você deseja executar um programa Java, você precisa do JRE. Se você não é um programador, não precisa instalar o JDK, mas apenas o JRE para executar programas Java. Porém, todas as versões do JDK vêm com o Java Runtime Environment, então você não precisa baixar e instalar o JRE separadamente no seu PC. A forma completa do JRE é Java Runtime Environment.

O que é JVM?

JVM é um mecanismo que fornece um ambiente de tempo de execução para conduzir o Código Java ou aplicativos. Ele converte bytecode Java em linguagem de máquina. JVM faz parte do Java Run Environment (JRE). Não pode ser baixado e instalado separadamente. Para instalar o JVM, você precisa instalar o JRE. A forma completa de JVM é Java Virtual Machine.

Em muitas outras linguagens de programação, o compilador produz código de máquina para um sistema específico. No entanto, o compilador Java produz código para uma máquina virtual que é chamada de JVM.

PRINCIPAIS DIFERENÇAS

  • JDK é um kit de desenvolvimento de software, enquanto JRE é um pacote de software que permite a execução do programa Java, enquanto JVM é um ambiente para execução de bytecode.
  • A forma completa do JDK é o Java Development Kit, enquanto a forma completa do JRE é o Java Runtime Environment, enquanto a forma completa do JVM é o Java Virtual Machine.
  • O JDK é dependente da plataforma, o JRE também depende da plataforma, mas o JVM é independente da plataforma.
  • O JDK contém ferramentas para desenvolvimento, depuração, etc. O JRE contém bibliotecas de classes e outros arquivos de suporte, enquanto as ferramentas de desenvolvimento de software não estão incluídas no JVM.
  • O JDK vem com o instalador, por outro lado, o JRE contém apenas o ambiente para executar o código-fonte, enquanto o JVM é fornecido com o software JDK e JRE.

Por que usar JDK?

Aqui estão as razões importantes para usar o JDK:

  • JDK contém ferramentas necessárias para escrever programas Java e JRE para executá-los.
  • Inclui um compilador, iniciador de aplicativo Java, Appletviewer, etc.
  • O compilador converte o código escrito em Java em código de bytes.
  • O lançador de aplicativos Java abre um JRE, carrega a classe necessária e executa seu método principal.

Por que usar o JRE?

Aqui estão as razões importantes para usar o JRE:

  • JRE contém bibliotecas de classes, JVM e outros arquivos de suporte. Ele não contém nenhuma ferramenta para desenvolvimento Java como um depurador, compilador, etc.
  • Ele usa classes de pacote importantes como bibliotecas de matemática, swingetc, util, lang, awt e runtime.
  • Se você tiver que executar miniaplicativos Java, o JRE deve ser instalado em seu sistema.

Por que JVM?

Aqui estão as razões importantes para usar JVM:

  • A JVM fornece uma maneira independente de plataforma de executar o código-fonte Java.
  • Possui inúmeras bibliotecas, ferramentas e estruturas.
  • Depois de executar o programa Java, você pode executar em qualquer plataforma e economizar muito tempo.
  • JVM vem com compilador JIT (Just-in-Time) que converte o código-fonte Java em linguagem de máquina de baixo nível. Portanto, ele é executado com mais rapidez como um aplicativo normal.

Recursos do JDK

Aqui está o recursos importantes do JDK:

  • Ele permite que você lide com várias extensões em um único bloco catch.
  • O JDK inclui todos os recursos que o JRE possui.
  • Ele contém ferramentas de desenvolvimento como compilador, depurador, etc.
  • O JDK fornece o ambiente para desenvolver e executar o código-fonte Java.
  • Ele pode ser instalado em sistemas operacionais Windows, Unix e Mac.
  • O operador Diamond pode ser usado para especificar uma interface de tipo genérico em vez de escrever o exato.

Recursos do JRE

Aqui está o características importantes do JRE:

  • Java Runtime Environment é um conjunto de ferramentas com as quais a JVM realmente é executada.
  • JRE contém tecnologia de implantação, incluindo Java Web Start e Java Plug-in.
  • Os desenvolvedores podem facilmente executar o código-fonte em JRE, mas não podem escrever e compilar o programa Java.
  • Inclui bibliotecas de integração como Java Database Connectivity (JDBC), Remote Method Invocation (RMI), Java Naming and Directory Interface (JNDI) e muito mais.
  • JRE tem cliente de máquina virtual JVM e Java HotSpot.

Recursos do JVM

Aqui estão os recursos importantes da JVM:

  • Ele permite que você execute aplicativos em um ambiente de nuvem ou em seu dispositivo.
  • Java Virtual Machine converte o código de byte em código específico da máquina.
  • Ele fornece funções básicas de java, como gerenciamento de memória, segurança, coleta de lixo e muito mais.
  • A JVM executa o programa usando bibliotecas e arquivos fornecidos pelo Java Runtime Environment.
  • JDK e JRE contêm Java Virtual Machine.
  • Ele pode executar o programa java linha por linha, portanto, também é chamado de interpretador.
  • JVM é facilmente personalizável, por exemplo, você pode alocar memória mínima e máxima para ela.
  • É independente do hardware e do sistema operacional. Portanto, você pode escrever um programa java uma vez e executá-lo em qualquer lugar.

Como o JDK funciona?

Funcionalidade JDK

Aqui estão os componentes importantes do JDK:

  • JDK e JRE : O JDK permite que os programadores criem programas Java principais que podem ser executados pelo JRE, que inclui JVM e bibliotecas de classes.
  • Bibliotecas de classes: É um grupo de bibliotecas carregáveis ​​dinamicamente que o programa Java pode chamar em tempo de execução.
  • Compiladores: É um programa Java que aceita arquivo de texto de desenvolvedores e compila em arquivo de classe Java. É a forma comum de saída fornecida pelo compilador, que contém o código de bytes Java. Em Java, o compilador principal é Javac.
  • Depuradores: Debugger é um programa Java que permite aos desenvolvedores testar e depurar programas Java.
  • JavaDoc: JavaDoc é a documentação feita pela Sun Microsystems para o Java. JavaDoc pode ser usado para gerar documentação de API em arquivo HTML a partir do programa de origem

Como o JRE funciona?

Funcionalidade JRE

JRE tem uma instância de JVM com ele, classes de biblioteca e ferramentas de desenvolvimento. Depois de escrever e compilar o código Java, o compilador gera um arquivo de classe com código de bytes.

Aqui estão os componentes importantes do JRE:

  • Carregadores de classes: O carregador de classes carrega várias classes que são necessárias para executar um programa Java. A JVM usa três carregadores de classes chamados carregador de classes de bootstrap, carregador de classes de extensões e carregador de classes do sistema.
  • Verificador de código de byte: O verificador de código de byte verifica o bytecode para que o código não perturbe o interpretador.
  • Intérprete: Depois que as classes são carregadas e o código é verificado, o interpretador lê o código linha por linha.
  • Tempo de execução: O tempo de execução é um sistema usado principalmente na programação para descrever o período de tempo durante o qual um determinado programa está sendo executado.
  • Hardware: Depois de compilar o código nativo Java, ele é executado em uma plataforma de hardware específica.

Dessa forma, o programa Java é executado em JRE.

Como funciona a JVM?

Funcionalidade JVM

Aqui estão os componentes importantes da JVM:

1) Carregador de classe

O carregador de classes é um subsistema usado para carregar arquivos de classe. Ele executa três funções principais viz. Carregando, vinculando e inicializando.

2) Área do Método

A área de método JVM armazena estrutura de classe como metadados, o código para métodos Java e o pool de tempo de execução constante.

3) Pilha

Todos os objetos, matrizes e variáveis ​​de instância são armazenados em um heap. Esta memória é compartilhada por vários threads.

4) Pilhas de linguagem JVM

As pilhas de linguagem Java armazenam variáveis ​​locais e seus resultados parciais. Cada encadeamento tem sua própria pilha de linguagem JVM, criada simultaneamente à medida que o encadeamento é criado. Um novo quadro é criado quando o método é invocado e removido quando o processo de invocação do método é concluído.

5) Registros de PC

Os registros do PC armazenam o endereço da instrução da máquina virtual Java, que está em execução no momento. Em Java, cada thread tem seu registro de PC separado.

6) Pilhas de método nativo

As pilhas de métodos nativos mantêm a instrução do código nativo que depende da biblioteca nativa. Ele aloca memória em heaps nativos ou usa qualquer tipo de pilha.

7) Motor de Execução

É um tipo de software usado para testar software, hardware ou sistemas completos. O mecanismo de execução de teste nunca carrega nenhuma informação sobre o produto testado.

8) Interface de método nativo

A Native Method Interface é uma estrutura de programação. Ele permite que o código Java, que está sendo executado em uma JVM, seja chamado por bibliotecas e aplicativos nativos.

9) Bibliotecas de método nativo

Bibliotecas nativas é uma coleção de bibliotecas nativas (C, C ++), que são necessárias para o mecanismo de execução.

Diferença entre JDK, JRE e JVM

Aqui estão as principais diferenças entre JDK vs. JRE vs. JVM:

JDK JRE JVM
A forma completa do JDK é o Java Development Kit.A forma completa do JRE é Java Runtime Environment.A forma completa de JVM é Java Virtual Machine.
JDK é um kit de desenvolvimento de software para desenvolver aplicativos em Java.É um pacote de software que fornece bibliotecas de classes Java com os componentes necessários para executar o código Java.A JVM executa o código de bytes Java e fornece um ambiente para executá-lo.
O JDK depende da plataforma.O JRE também depende da plataforma.JVM é independente de plataforma.
Ele contém ferramentas para desenvolver, depurar e monitorar o código java.Ele contém bibliotecas de classes e outros arquivos de suporte que a JVM requer para executar o programa.As ferramentas de desenvolvimento de software não estão incluídas no JVM.
É o superconjunto do JREÉ o subconjunto do JDK.JVM é um subconjunto do JRE.
O JDK permite que os desenvolvedores criem programas Java que podem ser executados e executados pelo JRE e JVM.O JRE é a parte do Java que cria a JVM.É o componente da plataforma Java que executa o código-fonte.
O JDK vem com o instalador.JRE contém apenas ambiente para executar o código-fonte.JVM incluído no software JDK e JRE.