Diferença entre JRE e JVM

Aqui, entenderemos o que é JVM (Java virtual machine), o que é JRE (Java Runtime Environment). Além disso, também estudaremos as principais diferenças entre JVM e JRE. Neste tópico, vamos aprender sobre JRE vs JVM.

O que é a JVM?

A Java Virtual Machine (JVM) é uma máquina virtual que reside no seu computador e executa o código de bytes java. A Java Virtual Machine entende apenas o código de bytes, é por isso que existe um compilador javac que converte o código fonte (.java) em código de bytes (.class), que é entendido pela JVM. Embora a JVM instalada em diferentes sistemas operacionais seja diferente, a saída produzida pela JVM é consistente em todos os sistemas operacionais.

Componentes da JVM

A seguir, estão diferentes componentes presentes na JVM:

1. ClassLoader: A principal função do carregador de classes é ler o arquivo .class e salvar o bytecode na área de método da JVM.

2. Área do Método: A área do método da Java Virtual Machine armazena todas as informações relacionadas à classe de todas as classes que estão sendo carregadas pelo carregador de classes.

3. Área de Heap: Área de Heap é uma parte da JVM na qual os objetos criados estão localizados. A JVM cria um objeto de classe para cada arquivo .class carregado pelo carregador de classes.

4. Stack: Esta parte da JVM armazena variáveis ​​temporárias.

5. Registradores de PC: Os Registradores de PC mantêm um registro de qual instrução foi executada e qual é a próxima na fila a ser executada.

6. Pilha de método nativo : a pilha de método nativo contém as informações do código nativo. Está escrito em outras linguagens de programação que não o java.

7. Mecanismo de execução: o mecanismo de execução da jvm é responsável pela execução do bytecode ou código compilado. O mecanismo de execução da jvm contém:

  • Processador virtual: O processador virtual é responsável por executar códigos de operação sequencialmente.
  • Intérprete: o intérprete interpreta o bytecode. Ele é responsável por ler o fluxo do código de bytes, interpretar as instruções do código de bytes e executá-las através do processador virtual. Mas a desvantagem do intérprete é que, quando um método é chamado várias vezes, toda vez que é necessário uma nova interpretação.
  • Compilador Just-In-Time (JIT): É basicamente usado para melhorar o desempenho. Ele é usado para superar a desvantagem do intérprete quando a JVM encontra código repetido e usa o compilador JIT que compila o bytecode e o transforma em código nativo. Esse código nativo é usado diretamente em chamadas de método repetidas, o que, por sua vez, fornece uma melhoria drástica no desempenho.

A partir dos detalhes listados acima, as funções da JVM podem ser resumidas como:

  • A JVM carrega o código.
  • A JVM verifica o código carregado.
  • A JVM executa o código se for válido.
  • A JVM fornece um ambiente de tempo de execução.

O funcionamento da JVM pode ser explicado através do fluxo abaixo:

O que é o JRE?

O Java Runtime Environment faz parte do Java development kit (JDK).

O Java Runtime Environment (JRE) é um pacote de instalação que fornece um ambiente para executar o código java. Deve-se notar que o JRE é usado apenas pelos usuários finais aqueles que desejam executar o código java. O JRE contém JVM nele, que é JVM, é um subconjunto do JRE. O Java Runtime Environment inclui o seguinte:

Tecnologias de implantação.

  1. Kits de ferramentas de interface do usuário, como o Abstract Window Toolkit (AWT), Swing, Java Naming e Directory Interface (JBDI), Java 2D, serviço de impressão, arrastar e soltar (DND), etc.
  2. Bibliotecas Lang e util, como lang e util, gerenciamento, zip, reflexão, JAR, API de preferência, simultaneidade de expressões regulares e utilitários multithreading, Log e outros.
  3. Bibliotecas base, incluindo entrada / saída (I / 0), matemática, rede, serialização de mecanismos de substituição, analisadores XML de Java, Java Native Interface (JNI).
  4. Bibliotecas de integração, por exemplo, Linguagem de Definição de Interface, Java DataBase Connectivity (JDBC), Invocação Remota de Método (RMI), Nomeação de Java e Interface de Diretório (JNDI).
  5. Java Virtual Machine (JVM).

Comparação cara a cara entre JRE vs JVM (Infográficos)

Abaixo estão as 8 principais diferenças entre JRE e JVM

Principais diferenças entre JRE e JVM

A seguir, estão as principais diferenças entre JRE e JVM

  • A principal função do JRE é fornecer um ambiente de tempo de execução para executar aplicativos java, enquanto a JVM converte código de bytes em código de máquina para execução e fornece independência de plataforma.
  • O JRE atua como contêiner e a jvm atua como conteúdo.
  • O JRE é composto de bibliotecas JVM + para executar aplicativos, enquanto o jvm contém apenas o ambiente de tempo de execução para executar o bytecode Java.

Tabela de comparação entre JRE e JVM

Vamos discutir a melhor comparação entre JRE e JVM

Base de comparaçãoJREJVM
Formulário completoA forma completa do JRE é o Java Runtime Environment.O formato completo da JVM é Java Virtual Machine.
DefiniçãoO Java Runtime Environment faz parte do Java Development Kit (JDK) que compreende uma JVM, classes principais e bibliotecas de suporte. Sua principal função é fornecer ambiente de tempo de execução para executar o código java.A Java Virtual Machine (JVM) é como um computador virtual que executa um conjunto de instruções pré-compiladas. Quando um compilador Java compila o código-fonte, ele gera um conjunto de instruções chamado bytecode (arquivos .class). A Java Virtual Machine interpreta as instruções do bytecode e as converte em código de máquina para sua execução.
Contêiner e ConteúdoO JRE atua como um contêiner que contém JVM, bibliotecas e outros arquivos. Além disso, o JRE não contém ferramentas de desenvolvimento como compilador e depurador.A JVM faz parte do JRE. Pode ser considerado como um subconjunto do JRE.
Objetivo do DesenvolvimentoNão é usado para fins de desenvolvimento.É usado para fins de desenvolvimento.
Finalidade em execuçãoÉ usado para executar o código java.Não é usado para executar código java.
Composto deO JRE é composto de bibliotecas JVM + para executar aplicativos.Ele contém apenas um ambiente de tempo de execução para executar o bytecode Java.
Subconjunto deÉ um subconjunto do JDK.É um subconjunto do JRE.
FerramentasEle contém bibliotecas de classes necessárias para executar programas.Não contém nenhuma ferramenta.

Conclusão - JRE vs JVM

A partir do artigo, temos um entendimento claro do Java Runtime Environment (JRE) e do Java Virtual Machine (JVM), que são as partes mais importantes do Java Development Kit (JDK).

Artigos recomendados

Este é um guia para JRE vs JVM. Aqui discutimos as principais diferenças entre JRE e JVM com infográficos e tabela de comparação. Você também pode consultar os seguintes artigos para saber mais -

  1. Java vs Node JS
  2. Groovy vs Java
  3. Java vs C #
  4. Java vs JavaScript