Comparación entre JVM, JRE y JDK: ¿cuál es la diferencia?

Un ingeniero escribe en una pared frente a miembros del equipo

Java es uno de los lenguajes de programación más populares que se utilizan en entornos de desarrollo en la actualidad. Se utiliza principalmente para proyectos de desarrollo de backend, desarrollo de juegos y computación de escritorio y móvil. Siga leyendo y descubra cómo la máquina virtual Java (JVM), Java Runtime Environment (JRE) y Java Development Kit (JDK) desempeñan un papel en el proceso de desarrollo de Java. También aprenderá sobre su relación entre ellos y las diferencias que los distinguen.

Las últimas noticias tecnológicas, respaldadas por los insights de expertos

Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Ya está suscrito.

Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

¿Qué es la máquina virtual Java (JVM)?

La máquina virtual Java, o JVM, carga, verifica y ejecuta el código byte de Java. Se conoce como el intérprete o el núcleo del lenguaje de programación Java porque ejecuta la programación Java.

El papel de JVM en Java

JVM es responsable de convertir el código de bytes en código específico de la máquina y es necesario tanto en JDK como en JRE. También depende de la plataforma y realiza muchas funciones, incluida la gestión de memoria y la seguridad. Además, JVM puede ejecutar programas escritos en otros lenguajes de programación que se han convertido a bytecode Java.

A menudo se hace referencia a la interfaz nativa de Java (JNI) en relación con JVM. JNI es una infraestructura que permite que el código Java que se ejecuta en JVM se comunique con (es decir, llamar a y ser llamado por) aplicaciones que están asociadas con una pieza de hardware y una plataforma de sistema operativo específica. Estas aplicaciones se denominan aplicaciones nativas y, a menudo, se pueden escribir en otros lenguajes. Los métodos nativos se utilizan para mover código nativo escrito en otros lenguajes a una aplicación Java.

Componentes de JVM

La JVM consta de tres componentes o subsistemas principales:

  • Class Loader Subsystem es responsable de cargar, vincular e inicializar un archivo de clase Java (es decir, "archivo Java"), también conocido como carga dinámica de clases.
  • Las áreas de datos en tiempo de ejecución contienen áreas de método, registros de PC, áreas de pila y subprocesos.
  • Execution Engine contiene un intérprete, un compilador y un área de recolección de elementos no utilizados.
Desarrollo de aplicaciones

Entérese: desarrollo de aplicaciones empresariales en la nube

En este video, el Dr. Peter Haumer analiza cómo es el desarrollo de aplicaciones empresariales modernas en la nube híbrida y hace una demostración de diferentes componentes y prácticas, incluidos IBM Z Open Editor, IBM Wazi y Zowe.

¿Qué es Java Runtime Environment (JRE)?

Java Runtime Environment, o JRE, es un conjunto de herramientas de software responsables de la ejecución del programa o aplicación Java en su sistema.

JRE utiliza espacio de almacenamiento dinámico para la asignación dinámica de memoria para objetos Java. JRE también se utiliza en JDB (Java Debugging).

El papel de JRE en Java

Si un programador desea ejecutar un programa Java mediante el comando Java, debe instalar JRE. Si solo está instalando (y no desarrollando ni compilando código), entonces solo se necesita JRE.

Componentes JRE

Además de la máquina virtual Java, JRE se compone de otras herramientas y características de software de soporte para aprovechar al máximo sus aplicaciones Java.

  • Soluciones de despliegue: como parte de la instalación de JRE se incluyen tecnologías de despliegue como Java Web Start y Java plug-in que simplifican la activación de aplicaciones y proporcionan soporte avanzado para futuras actualizaciones de Java.
  • Kits de herramientas de desarrollo: JRE también contiene herramientas de desarrollo diseñadas para ayudar a los desarrolladores a mejorar su interfaz de usuario. Algunos de estos kits de herramientas incluyen lo siguiente:
    • Java 2D: una interfaz de programación de aplicaciones (API) utilizada para dibujar gráficos bidimensionales en lenguaje Java. Los desarrolladores pueden crear interfaces de usuario enriquecidas, efectos especiales, juegos y animaciones.
    • Abstract Window Toolkit (AWT): una interfaz gráfica de usuario (GUI) que se utiliza para crear objetos, botones, barras de desplazamiento y ventanas.
    • Swing: otra GUI ligera que utiliza un amplio conjunto de widgets para ofrecer personalizaciones flexibles y fáciles de usar.
  • Bibliotecas de integración: Java Runtime Environment proporciona varias bibliotecas de integración y bibliotecas de clases para ayudar a los desarrolladores a crear conexiones de datos fluidas entre sus aplicaciones y servicios. Algunas de estas bibliotecas incluyen lo siguiente:
    • Java IDL: utiliza Common Object Request Brokerage Architecture (CORBA) para admitir objetos distribuidos escritos en el lenguaje de programación Java.
    • API de Java Database Connectivity (JDBC): proporciona herramientas para que los desarrolladores escriban aplicaciones con acceso a bases de datos de relaciones remotas, archivos planos y hojas de cálculo.
    • Java Naming and Directory Interface (JNDI): una interfaz de programación y un servicio de directorio que permite a los clientes crear aplicaciones portátiles que pueden obtener información de bases de datos mediante convenciones de nomenclatura.
  • Bibliotecas de lenguajes y utilidades: incluidas con JRE están Java.lang. y Java.util., que son fundamentales para el diseño de aplicaciones Java, el control de versiones de paquetes, la gestión y la supervisión. Algunos de estos paquetes incluyen lo siguiente
    • Marco de colecciones: una arquitectura unificada que se compone de una colección de interfaces diseñadas para mejorar el almacenamiento y el proceso de los datos de la aplicación.
    • Utilidades de concurrencia: un potente marco de infraestructura con utilidades de subprocesos de alto rendimiento.
    • API de preferencias: una API ligera y persistente multiplataforma que permite a varios usuarios en la misma máquina definir su propio grupo de preferencias de aplicaciones.
    • Registro: produce informes de registro, como fallas de seguridad, errores de configuración y problemas de rendimiento, para su posterior análisis.
    • Java Archive (JAR): un formato de archivo independiente de la plataforma que permite agrupar varios archivos en formato de archivo JAR, lo que mejora significativamente la velocidad de descarga y reduce el tamaño del archivo.

¿Qué es Java Development Kit (JDK)?

Java Development Kit, o JDK, es un kit de desarrollo de software que es un superconjunto de JRE. Es el componente fundamental que permite el desarrollo de aplicaciones Java y subprogramas Java. Es específico de la plataforma, por lo que se necesitan instaladores independientes para cada sistema operativo (por ejemplo, Mac, Unix y Windows).

El papel de JDK en Java

JDK contiene todas las herramientas necesarias para compilar, depurar y ejecutar un programa desarrollado con la plataforma Java. (Vale la pena señalar que los programas Java también se pueden ejecutar mediante la línea de comandos).

Componentes JDK

JDK incluye todas las herramientas, ejecutables y binarios de Java necesarios para ejecutar programas Java. Esto incluye JRE, un compilador, un depurador, un archivador y otras herramientas que se utilizan en el desarrollo de Java.

Java SE frente a Java EE

Java es sinónimo de Java Standard Edition (Java SE) o Core Java. Los tres eufemismos se refieren a la especificación básica de Java que incluye el acto de definir tipos y objetos. Java EE, por otro lado, proporciona API y generalmente se usa para ejecutar aplicaciones más grandes. El contenido de este blog se centra en Java SE.

Cómo funcionan juntos JVM, JRE y JDK

Primero veamos cómo funcionan juntos los tres componentes principales de Java y luego podemos examinar las diferencias. El siguiente diagrama proporciona una imagen de cómo JVM, JRE y JDK encajan en el escenario Java.

Si imagina una pelota de béisbol abierta, contiene tres componentes principales: el núcleo redondo acolchado, la sección media de lana y algodón y el exterior de piel de vaca. Una pelota sin estas tres capas no realizará su función prevista. Al igual que las tres partes básicas de una pelota de béisbol, JVM, JRE y JDK tienen funciones específicas. Sin los tres, Java no funcionará correctamente.

Comparación de JVM, JRE y JDK

En el siguiente video, Jamil Spain explica con más detalle cómo se relacionan JRE y JDK:

JDK, JRE y JVM: diferencias clave

Y ahora, para las diferencias:

  • JDK es la plataforma de desarrollo, mientras que JRE es para la ejecución.
  • JVM es la base, o el corazón del lenguaje de programación Java, y garantiza que el código fuente Java del programa sea independiente de la plataforma.
  • JVM está incluido tanto en JDK como en JRE: los programas Java no se ejecutarán sin ella.

Tecnologías complementarias

Existen muchas tecnologías complementarias que se pueden utilizar para mejorar JVM, JRE o JDK. Las siguientes tecnologías se encuentran entre las más utilizadas:

  • Just-in-time Compiler (JIT) es parte de JVM y optimiza la conversión de bytecode a código de máquina. Selecciona bytecodes similares para compilar al mismo tiempo, lo que reduce la duración general de la compilación de bytecode a código de máquina.
  • Javac, otra herramienta complementaria, es un compilador que lee definiciones de Java y las convierte en código de bytes que puede ejecutarse en JVM.
  • Javadoc convierte la documentación de la API del código fuente de Java a HTML. Esto es útil al crear documentación estándar en HTML.

JVM y tecnología de contenedores

La máquina virtual Java (JVM) se emplea para crear, lo adivinó,máquinas virtuales (VM). Las máquinas virtuales son servidores que permiten que varias aplicaciones se ejecuten en el mismo hardware físico subyacente sin afectarse entre sí. Esto proporciona un mejor uso de recursos y hace que sea mucho más fácil y rentable a escala que la infraestructura tradicional. Las VM también son fácilmente desechables debido a su independencia. Cuando ya no necesite la aplicación, simplemente desactive la VM.

Los contenedores llevan esta abstracción al siguiente nivel y virtualizan el kernel del sistema operativo. La ausencia del sistema operativo hace que los contenedores sean aún más ligeros, rápidos y flexibles que las máquinas virtuales.

Java, JVM, JDK, JDK e IBM

Para muchas organizaciones, Java sigue siendo una parte vital del desarrollo de aplicaciones y proporciona una base sólida para crear soluciones portátiles y escalables. También puede desempeñar un papel clave en la modernización de las aplicaciones en el camino hacia la nube.

Dé el siguiente paso y explore OpenJDK e IBM Runtimes for Business, que proporciona soporte comercial confiable y rentable para implementar, monitorear y administrar aplicaciones Java.

Soluciones relacionadas
Desarrollo de aplicaciones impulsado por IA

watsonx.ai permite a los equipos de desarrollo de aplicaciones integrar perfectamente la IA en sus flujos de trabajo. Desde la creación de modelos hasta su despliegue, este completo kit de herramientas da soporte a todo el ciclo de vida de la IA.

Explorar watsonx.ai
IBM Z Development and Test Environment

Utilice una plataforma para el desarrollo de aplicaciones de mainframe, pruebas, demostración y entrenamiento en hardware x86.

Explorar el entorno de desarrollo Z
Soluciones de computación en la nube móvil

Descubra la plataforma de desarrollo de aplicaciones móviles de IBM para diseñar, crear prototipos y comercializar aplicaciones de manera rápida y sencilla.

Explorar la nube móvil
Dé el siguiente paso

Los servicios de consultoría de desarrollo de aplicaciones en la nube de IBM Cloud ofrecen orientación experta y soluciones innovadoras para agilizar su estrategia de nube. Colabore con los expertos en nube y desarrollo de IBM para modernizar, escalar y acelerar sus aplicaciones, y obtenga resultados transformadores para su empresa.

Conozca los servicios de desarrollo de aplicaciones Comience a crear con IBM Cloud de forma gratuita