Diferencia entre JRE vs JVM

Aquí, entenderemos qué es JVM (máquina virtual Java), qué es JRE (Java Runtime Environment). Además, también estudiaremos las principales diferencias entre JVM y JRE. En este tema, vamos a aprender sobre JRE vs JVM.

¿Qué es la JVM?

Java Virtual Machine (JVM) es una máquina virtual que reside en su computadora y ejecuta código de bytes Java. La máquina virtual Java solo entiende el código de byte, por eso hay un compilador javac que convierte el código fuente (.java) en código de byte (.class) que JVM entiende. Aunque JVM instalado en diferentes sistemas operativos es diferente, la salida producida por JVM es consistente en todos los sistemas operativos.

Componentes de JVM

Los siguientes son diferentes componentes presentes dentro de JVM:

1. ClassLoader: la función principal del cargador de clases es leer el archivo .class y guardar el código de bytes en el área de método de la JVM.

2. Área de métodos: el área de métodos de Java Virtual Machine almacena toda la información relacionada con las clases de todas las clases que el cargador de clases carga.

3. Área de almacenamiento dinámico: El área de almacenamiento dinámico es una parte de JVM donde se encuentran los objetos creados. JVM crea un objeto de clase para cada archivo .class cargado por el cargador de clases.

4. Pila: esta parte de JVM almacena variables temporales.

5. Registros de PC: los registros de PC mantienen un registro de qué instrucción se ha ejecutado y cuál es la siguiente en la línea que se ejecutará.

6. Pila de métodos nativos: la pila de métodos nativos contiene la información del código nativo. Está escrito en otros lenguajes de programación que no sean Java.

7. Motor de ejecución: El motor de ejecución de jvm es responsable de la ejecución del código de bytes o el código compilado. El motor de ejecución de jvm contiene:

  • Procesador virtual: el procesador virtual es responsable de ejecutar los códigos de operación secuencialmente.
  • Intérprete: el intérprete interpreta el código de bytes. Es responsable de leer el flujo de código de bytes, interpretar las instrucciones de código de bytes y ejecutarlas a través del procesador virtual. Pero la desventaja del intérprete es que cuando un método se llama varias veces, cada vez se requiere una nueva interpretación.
  • Compilador Just-In-Time (JIT): se utiliza básicamente para mejorar el rendimiento. Se utiliza para superar la desventaja del intérprete cuando JVM encuentra código repetido, utiliza el compilador JIT que compila el código de bytes y lo cambia a código nativo. Este código nativo se usa directamente en llamadas a métodos repetidos, lo que a su vez proporciona una mejora drástica en el rendimiento.

De los detalles enumerados anteriormente, las funciones de JVM se pueden resumir como:

  • JVM carga el código.
  • JVM verifica el código cargado.
  • JVM ejecuta código si es válido.
  • JVM proporciona un entorno de tiempo de ejecución.

El funcionamiento de JVM puede explicarse a través del siguiente flujo:

¿Qué es el JRE?

Java Runtime Environment es parte del kit de desarrollo de Java (JDK).

Java Runtime Environment (JRE) es un paquete de instalación que proporciona un entorno para ejecutar código java. Cabe señalar que JRE es utilizado solo por los usuarios finales, aquellos que desean ejecutar código java. JRE contiene JVM, es decir, JVM es un subconjunto de JRE. Java Runtime Environment incluye lo siguiente:

Tecnologías de implementación.

  1. Kits de herramientas de interfaz de usuario como Abstract Window Toolkit (AWT), Swing, Java Naming and Directory Interface (JBDI), Java 2D, Servicio de impresión, Arrastrar y soltar (DND), etc.
  2. Lang y bibliotecas de utilidades como lang y util, gestión, zip, reflexión, JAR, API de preferencias, concurrencia de expresiones regulares y utilidades de subprocesos múltiples, registro y otros.
  3. Bibliotecas base que incluyen Entrada-salida (I / 0), Matemáticas, Redes, Serialización de mecanismos de anulación, analizadores XML de Java, Interfaz nativa de Java (JNI).
  4. Bibliotecas de integración, por ejemplo, Lenguaje de definición de interfaz, Java DataBase Connectivity (JDBC), Invocación remota de métodos (RMI), Naming Java e Interfaz de directorio (JNDI).
  5. Máquina virtual Java (JVM).

Comparación cabeza a cabeza entre JRE vs JVM (Infografía)

A continuación se muestran las 8 principales diferencias entre JRE y JVM

Diferencias clave entre JRE vs JVM

Las siguientes son diferencias clave entre JRE y JVM

  • La función principal de JRE es proporcionar un entorno de tiempo de ejecución para ejecutar aplicaciones Java, mientras que JVM convierte el código de bytes en código de máquina para la ejecución y proporciona independencia de la plataforma.
  • JRE actúa como contenedor y jvm actúa como contenido.
  • JRE está compuesto por bibliotecas JVM + para ejecutar aplicaciones, mientras que jvm contiene solo un entorno de tiempo de ejecución para ejecutar código de bytes Java.

Tabla de comparación entre JRE vs JVM

Analicemos la mejor comparación entre JRE y JVM

Bases de comparaciónJREJVM
Forma completaLa forma completa de JRE es el Java Runtime Environment.La forma completa de JVM es Java Virtual Machine.
DefiniciónJava Runtime Environment es parte del Java Development Kit (JDK) que consta de una JVM, clases principales y bibliotecas de soporte. Su función principal es proporcionar un entorno de tiempo de ejecución para ejecutar código Java.Java Virtual Machine (JVM) es como una computadora virtual que ejecuta un conjunto de declaraciones precompiladas. Cuando un compilador Java compila el código fuente, genera un conjunto de instrucciones llamadas bytecode (archivos .class). La máquina virtual Java interpreta las instrucciones de código de bytes y las convierte en código de máquina para su ejecución.
Contenedor y ContenidoJRE actúa como un contenedor que contiene JVM, bibliotecas y otros archivos. Además, JRE no contiene herramientas de desarrollo como compilador y depurador.JVM es parte de JRE. Se puede considerar como un subconjunto de JRE.
Propósito de desarrolloNo se utiliza con fines de desarrollo.Se utiliza con fines de desarrollo.
Propósito corrienteSe utiliza para ejecutar código java.No se utiliza para ejecutar código java.
Compuesto deJRE está compuesto por bibliotecas JVM + para ejecutar aplicaciones.Contiene solo un entorno de tiempo de ejecución para ejecutar código de bytes Java.
Subconjunto deEs un subconjunto de JDK.Es un subconjunto de JRE.
HerramientasContiene bibliotecas de clases que se requieren para ejecutar programas.No contiene ninguna herramienta.

Conclusión - JRE vs JVM

Según el artículo, tenemos una comprensión clara de Java Runtime Environment (JRE) y Java Virtual Machine (JVM), que son las partes más importantes de Java Development Kit (JDK).

Artículos recomendados

Esta es una guía de JRE vs JVM. Aquí hemos discutido las diferencias clave entre JRE y JVM con infografías y tabla de comparación. También puede echar un vistazo a los siguientes artículos para obtener más información:

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