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.
- 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.
- 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.
- 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).
- 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).
- 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ção | JRE | JVM |
Formulário completo | A forma completa do JRE é o Java Runtime Environment. | O formato completo da JVM é Java Virtual Machine. |
Definição | O 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údo | O 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 Desenvolvimento | Nã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 de | O 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. |
Ferramentas | Ele 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 -
- Java vs Node JS
- Groovy vs Java
- Java vs C #
- Java vs JavaScript