¿Cuál es la diferencia entre JVM, JDK, JRE y OpenJDK?


¿Cuál es la diferencia entre JVM, JDK, JRE & OpenJDK?

Estaba programando en Java y me encontré con estas frases, ¿cuáles son las diferencias entre ellas?

Author: naXa, 2012-07-18

18 answers

JVM

La Máquina Virtual Java (JVM) es la máquina virtual que ejecuta los bytecodes Java. La JVM no entiende el código fuente de Java, es por eso que compila sus archivos *.java para obtener archivos *.class que contienen los bytecodes entendidos por la JVM. También es la entidad que permite que Java sea un "lenguaje portable" ( escribir una vez, ejecutar en cualquier lugar). De hecho, hay implementaciones específicas de la JVM para diferentes sistemas (Windows, Linux, macOS, ver el Wikipedia list ), el objetivo es que con los mismos bytecodes todos den los mismos resultados.

JDK y JRE

Para explicar la diferencia entre JDK y JRE, lo mejor es leer la documentación de Oracle y consultar el diagrama:

Java Runtime Environment (JRE)

El Java Runtime Environment (JRE) proporciona las bibliotecas, la Máquina Virtual Java y otros componentes para ejecutar applets y aplicaciones escritas en Java lenguaje de programación. Además, dos tecnologías de implementación clave forman parte del JRE: Java Plug-in, que permite que los applets se ejecuten en navegadores populares; y Java Web Start, que implementa aplicaciones independientes en una red. También es la base para las tecnologías en la plataforma Java 2, Enterprise Edition (J2EE) para el desarrollo y despliegue de software empresarial. El JRE no contiene herramientas y utilidades como compiladores o depuradores para desarrollar applets y aplicación.


Java Development Kit (JDK)

El JDK es un superconjunto del JRE, y contiene todo lo que está en el JRE, además de herramientas como los compiladores y depuradores necesarios para desarrollar applets y aplicaciones.

Tenga en cuenta que Oracle no es el único que proporciona JDKs.

OpenJDK

El OpenJDK es la implementación de código abierto del Java SE 7 JSR ( JSR 336 ). Ahora casi no hay diferencia entre el Oracle JDK y el OpenJDK. El año pasado, Oracle tomó esta decisión : Pasando a OpenJDK como la Implementación de referencia oficial de Java SE 7

Las diferencias se indican en este blog :

P: ¿Cuál es la diferencia entre el código fuente que se encuentra en el repositorio OpenJDK y el código que se usa para construir el Oracle JDK?

R: Está muy cerca: nuestro proceso de compilación para las versiones de Oracle JDK se basa en OpenJDK 7 agregando solo un par de piezas, como el código de implementación, que incluye la implementación de Oracle del Plugin de Java y Java WebStart, así como algunos componentes de terceros de código cerrado como un rasterizador de gráficos, algunos componentes de terceros de código abierto, como Rhino, y algunos bits y piezas aquí y allá, como documentación adicional o fuentes de terceros. En el futuro, nuestra intención es abrir todas las piezas del Oracle JDK excepto aquellas que consideramos comerciales características como JRockit Mission Control (aún no disponible en Oracle JDK), y reemplazar componentes de terceros con alternativas de código abierto para lograr una paridad más cercana entre las bases de código.

Dependiendo de la versión utilizada, la VM puede diferir: Correspondencia entre las versiones de Sun/Oracle JDK, OpenJDK y HotSpot VM

 323
Author: alain.janinm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-28 12:40:29
  • JVM es una Máquina Virtual Java the la JVM en realidad ejecuta código de bytes Java.
  • JDK es Java Developer Kit Java el JDK es lo que necesitas para compilar código fuente Java.
  • JRE es Java Runtime Environment is es lo que necesita para ejecutar un programa Java y contiene una JVM, entre otras cosas.

OpenJDK es una implementación JDK específica.

 76
Author: hvgotcodes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-09 22:57:08

JDK (Java Development Kit)

Java Developer Kit contiene las herramientas necesarias para desarrollar los programas Java, y JRE para ejecutar los programas. Las herramientas incluyen compilador (javac.exe), Java application launcher (java.exe), Appletviewer, etc {

El compilador convierte el código java en código de bytes. Java application launcher abre un JRE, carga la clase e invoca su método principal.

Necesitas JDK, si quieres escribir tus propios programas, y compilarlos. Para correr programas java, JRE es suficiente.

JRE está dirigido para la ejecución de archivos Java

Es decir, JRE = JVM + Clases de paquetes Java(como util, math, lang, awt,swing, etc.)+bibliotecas de tiempo de ejecución.

JDK está dirigido principalmente al desarrollo de java. Es decir, puede crear un archivo Java (con la ayuda de paquetes Java), compilar un archivo Java y ejecutar un archivo java.

JRE (Java Runtime Environment)

Java Runtime Environment contiene JVM, bibliotecas de clases y otros archivos de soporte. No contiene ninguna herramienta de desarrollo como compilador, depurador, etc. En realidad, JVM ejecuta el programa, y utiliza las bibliotecas de clases, y otros archivos de soporte proporcionados en JRE. Si desea ejecutar cualquier programa java, necesita tener JRE instalado en el sistema

La Máquina Virtual Java proporciona una forma de ejecutar código independiente de la plataforma; Eso significa compilar una vez en cualquier máquina y ejecutarla en cualquier lugar (cualquier máquina).

JVM (Java Virtual Máquina)

Como todos sabemos cuando compilamos un archivo Java, la salida no es un 'exe' sino un '.archivo de clase. ‘.el archivo de clase consiste en códigos de bytes Java que son comprensibles por JVM. Java Virtual Machine interpreta el código de bytes en el código de máquina dependiendo del sistema operativo subyacente y la combinación de hardware. Es responsable de todas las cosas como recolección de basura, verificación de límites de matriz, etc. JVM depende de la plataforma.

La JVM se llama "virtual" porque proporciona una interfaz de máquina que no depende del sistema operativo subyacente ni de la arquitectura de hardware de la máquina. Esta independencia del hardware y del sistema operativo es una piedra angular del valor write-once run-anywhere de los programas Java.

Hay diferentes implementaciones de JVM. Estos pueden diferir en cosas como el rendimiento, la fiabilidad, la velocidad, etc. Estas implementaciones diferirán en aquellas áreas donde la especificación de Java no menciona cómo implementar el características, como cómo funciona el proceso de recolección de basura es dependiente de JVM, Java spec no define ninguna forma específica de hacer esto.

 44
Author: user25226,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-14 03:42:16

A Java virtual machine (JVM) es una máquina virtual que puede ejecutar código de bytes Java. Es el componente de ejecución de código de la plataforma de software Java.

El Java Development Kit (JDK) es un producto de Oracle Corporation dirigido a desarrolladores de Java. Desde la introducción de Java, ha sido con mucho el Kit de Desarrollo de Software (SDK) de Java más utilizado.

Java Runtime Environment, también se conoce como Java Runtime, Runtime Medio ambiente

OpenJDK (Open Java Development Kit) es una implementación libre y de código abierto del lenguaje de programación Java. Es el resultado de un esfuerzo que Sun Microsystems inició en 2006. La implementación está bajo la Licencia Pública General de GNU (GPL) con una excepción de enlace.

 22
Author: nidhin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-12 11:41:28

Simplemente:

JDK (Kit de Desarrollo de Java):

  • contiene las herramientas necesarias para desarrollar los programas Java.
  • Necesitas JDK, si quieres escribir tus propios programas, y compilarlos.
  • JDK está dirigido principalmente para el desarrollo de java.

JRE (Java Runtime Environment)

Java Runtime Environment contiene JVM, bibliotecas de clases y otros archivos de soporte. JRE está dirigido para la ejecución de Java file.

JVM (Máquina Virtual Java)

La JVM interpreta el código de bytes en el código máquina dependiendo del sistema operativo subyacente y la combinación de hardware. Es responsable de todas las cosas como recolección de basura, verificación de límites de matriz, etc. Java Virtual Machine proporciona una forma independiente de la plataforma de ejecutar código.

 15
Author: A_BOSS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-03 10:35:21

JVM es el código Java de la máquina virtual que se ejecuta en

JRE es el entorno (bibliotecas estándar y JVM) requerido para ejecutar aplicaciones Java

JDK es el JRE con herramientas de desarrollo y documentación

OpenJDK es una versión de código abierto del JDK, a diferencia del JDK común propiedad de Oracle

 12
Author: Garrett Hall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-18 18:01:22

JDK - Compila java a Código de Bytes. Consiste en depuradores, compiladores, etc.

javac file.java // Is executed using JDK

JVM - Ejecuta el código de bytes. JVM es la que hace que la plataforma java sea independiente. Pero JVM varía para las plataformas.

JRE - JVM junto con bibliotecas de tiempo de ejecución java para ejecutar programas java.

 6
Author: bharanitharan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-19 00:09:48

Otro aspecto que vale la pena mencionar:

JDK (java development kit)

Lo necesitará para fines de desarrollo como el nombre sugiere.

Por ejemplo: una compañía de software tendrá que instalar JDK en su computadora porque necesitará desarrollar nuevo software que implica compilar y ejecutar sus programas Java también.

Así que podemos decir que JDK = JRE + JVM.

JRE (java run-time environment)

Es necesario ejecutar Java programa. No puedes compilar programas Java con él .

Por ejemplo: un usuario normal de computadora que quiere ejecutar algunos juegos en línea entonces necesitará JRE en su sistema para ejecutar programas Java.

JVM (máquina virtual java)

Como puede que sepas, ejecuta los bytecodes. Hace que la plataforma Java sea independiente porque ejecuta el archivo .class que obtienes después de compilar el programa Java independientemente de si lo compilas en Windows, Mac o Linux.

Abierto JDK

Bueno, como dije anteriormente. Ahora JDK está hecho por diferentes compañías, una de ellas que pasa a ser de código abierto y libre para uso público es OpenJDK, mientras que algunos otros son JRockit JDK de Oracle Corporation o IBM JDK.

Sin embargo, todos pueden parecer iguales para el usuario general.

Conclusión

Si eres un programador Java necesitarás JDK en tu sistema y este paquete incluirá JRE y JVM también, pero si eres un usuario normal al que le gusta juega a juegos en línea, entonces solo necesitarás JRE y este paquete no tendrá JDK en él.

En otras palabras, JDK es el abuelo JRE es el padre y JVM es su hijo.

 4
Author: Mrinal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-03 20:52:56

JRE - significa Java run-time y es necesario para ejecutar la aplicación Java.

JDK - significa Java development kit y proporciona herramientas para desarrollar programas Java, por ejemplo, Java compiler. También contiene JRE.

JVM - significa Java virtual machine y es el proceso responsable de ejecutar la aplicación Java.

JIT - significa compilación Justo a tiempo y ayuda a aumentar el rendimiento de la aplicación Java mediante la conversión de Java código de byte en código nativo cuando el umbral cruzado es decir, principalmente el código caliente se convierte en código nativo.

 4
Author: roottraveller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-10 11:21:58

Java es el lenguaje e incluye una sintaxis estricta y fuertemente mecanografiada con la que ya debería estar muy familiarizado.

Java 2 Platform, Standard Edition, también conocida como J2SE, se refería a la plataforma e incluía las clases en java.lang y java.io paquetes, entre otros. Fue el bloque de construcción sobre el que se construyeron las aplicaciones Java.

Una Máquina Virtual Java, o JVM, es una máquina virtual de software que ejecuta código Java compilado. Porque el código Java compilado es simplemente bytecode, la JVM es responsable de compilar ese bytecode a código máquina antes de ejecutarlo. (Esto a menudo se llama Compilador Just In Time o Compilador JIT.) La JVM también se encarga de la gestión de la memoria para que el código de la aplicación no tenga que hacerlo.

El Java Development Kit, o JDK, fue y sigue siendo la pieza de software que los desarrolladores de Java utilizan para crear aplicaciones Java. Contiene un compilador de lenguaje Java, un generador de documentación, herramientas para trabajar con código nativo y (normalmente) el código fuente Java de la plataforma para habilitar clases de plataforma de depuración.

El Java Runtime Environment, o JRE, era y sigue siendo la pieza de software que los usuarios finales descargan para ejecutar aplicaciones Java compiladas. Incluye una JVM pero no contiene ninguna de las herramientas de desarrollo incluidas en el JDK. El JDK, sin embargo, contiene un JRE.

 3
Author: Koray Tugay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-16 17:07:51

En palabras simples:

JVM: Una especificación que describe la forma/recursos para ejecutar un programa java. En realidad ejecuta el código de bytes y hace que la plataforma Java sea independiente. Al hacerlo, es diferente para diferentes plataformas. JVM para windows no puede funcionar como JVM para UNIX.

JRE: Implementación de JVM. (JVM + bibliotecas de tiempo de ejecución)

JDK: JRE + compilador java y otras herramientas esenciales para construir un programa java desde cero

 3
Author: user2807418,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-27 03:56:25

JVM : esto en realidad significa el intérprete de código de bytes .Depende de la plataforma. Por ejemplo: en la plataforma Windows el 'java.exe 'o' javaw.exe ' precess es el proceso jvm.

JDK : es un kit de herramientas que contiene las bibliotecas y utilidades necesarias para desarrollar y ejecutar el programa/aplicación java

JRE: es el entorno de ejecución para un java application.ie, solo soporta dependencias de tiempo de ejecución incluyendo jvm para el programa compilado. Si queremos compilar un programa java necesitamos jdk.

 2
Author: Tom Sebastian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-10 09:15:50

JVM : máquina virtual de java. le dice a la máquina qué hacer con el código Java. No puede descargar JVM tal cual. Viene empaquetado en algún otro componente.

JRE: Otro componente mencionado anteriormente es el JRE. Es JVM + otros jars para crear un entorno de tiempo de ejecución

JDK: contiene JRE(que a su vez contiene JVM). Una vez que obtenga JDK, no necesita instalar JRE y JVM por separado. Contiene compilador que compila su .archivos java para .archivos de clase

 2
Author: Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-15 11:02:50

JVM

JVM (Java Virtual Machine) es una máquina abstracta. Es una especificación que proporciona un entorno de tiempo de ejecución en el que se puede ejecutar código de bytes java. Las JVM están disponibles para muchas plataformas de hardware y software.

JRE

JRE es un acrónimo de Java Runtime Environment.It se utiliza para proporcionar tiempo de ejecución environment.It es la implementación de JVM.It físicamente exists.It contiene un conjunto de bibliotecas + otros archivos que JVM utiliza en ejecución.

JDK

JDK es un acrónimo de Java Development Kit.It físicamente exists.It contiene herramientas de desarrollo JRE+.

Enlace: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm

 2
Author: Nikhil Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-27 03:55:05

JRE ejecuta la aplicación pero JVM lee las instrucciones línea por línea para que sea intérprete.

JDK = JRE + Herramientas de desarrollo

JRE = JVM + Clases de biblioteca

 1
Author: KIBOU Hassan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-27 03:55:27

JVM Máquina Virtual Java , en realidad ejecuta el bytecode java. Es el bloque de ejecución en la plataforma JAVA. Convierte el bytecode al código máquina.

JRE Java Runtime Environment , proporciona los requisitos mínimos para ejecutar una aplicación Java; consiste en la Máquina Virtual Java (JVM), las clases principales y los archivos de soporte.

JDK Java Development Kit, tiene todas las herramientas para desarrollar su software de aplicación. Es como JRE + JVM

Open JDK es una implementación libre y de código abierto de la Plataforma Java.

 0
Author: Ankur Anandapu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-25 07:12:09

En términos sencillos:- JDK = JRE + Development/debugging tools, donde JDK es nuestro paquete completo para trabajar con Java, desde la creación de la compilación hasta su ejecución.Por otro lado, JRE es solo de ejecución de código(Código de bytes).

Nota:- Ya sea que estemos instalando JDK o JRE, JVM vendría incluido con ambos paquetes y JVM es la parte donde el compilador JIT convierte el código de bytes en el código específico de la máquina.

Acaba de leer el artículo sobre JDK ,JRE, JVM y JIT

 0
Author: AugustRush,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-11 15:40:12

JDK: El paquete completo que necesita para escribir y ejecutar código java

OpenJDK: Una implementación independiente de JDK para hacerlo mucho mejor

JVM: Convierte el código Java en bytecode y proporciona las especificaciones que indican cómo debe compilarse, cargarse, verificarse, comprobarse si hay errores y ejecutarse un código Java.

JRE: Implementación de la JVM con la que se utilizan algunas bibliotecas Java para Ejecutar el programa

 0
Author: dhirwan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-24 11:49:56