¿Cuál es la diferencia entre JDK y JRE?
¿Cuáles son sus roles y cuándo debo usar uno u otro?
¿Cuál es la diferencia entre JDK y JRE?
¿Cuáles son sus roles y cuándo debo usar uno u otro?
Respuestas:
El JRE es el Java Runtime Environment . Es un paquete de todo lo necesario para ejecutar un programa Java compilado, incluida la máquina virtual Java (JVM), la biblioteca de clases Java, el java
comando y otra infraestructura. Sin embargo, no se puede usar para crear nuevos programas.
El JDK es el Kit de desarrollo de Java , el SDK completo para Java. Tiene todo lo que tiene el JRE, pero también el compilador ( javac
) y las herramientas (como javadoc
y jdb
). Es capaz de crear y compilar programas.
Por lo general, si solo le importa ejecutar programas Java en la computadora, solo instalará el JRE. Es todo lo que necesitas. Por otro lado, si planea hacer algo de programación Java, debe instalar el JDK en su lugar.
A veces, incluso si no planea hacer ningún desarrollo de Java en una computadora, aún necesita instalar el JDK. Por ejemplo, si está implementando una aplicación web con JSP, técnicamente solo está ejecutando programas Java dentro del servidor de aplicaciones. ¿Por qué necesitarías el JDK entonces? Porque el servidor de aplicaciones convertirá JSP en servlets Java y necesita usar el JDK para compilar los servlets. Estoy seguro de que hay más ejemplos.
La respuesta anterior (por Pablo) es muy correcta. Esto es solo información adicional.
El JRE es, como su nombre lo indica, un entorno . Básicamente es un montón de directorios con archivos relacionados con Java, a saber:
bin/
contiene los programas ejecutables de Java. Lo más importante es java
(y también para Windows javaw
), que lanza la JVM. Hay algunas otras utilidades aquí también, como keytool
y policytool
.conf/
contiene archivos de configuración editables por el usuario para que jueguen los expertos de Java.lib/
tiene una gran cantidad de archivos de soporte: algunos .jar
s, archivos de configuración, archivos de propiedades, fuentes, traducciones, certs, etc., todos los "recortes" de Java. Lo más importante es modules
un archivo que contiene los .class
archivos de la biblioteca estándar de Java..dll
(Windows) o .dylib
(macOS) o.so
archivos (Linux) bajo bin/
o lib/
con código binario nativo de soporte específico del sistema.El JDK también es un conjunto de directorios. Es un superconjunto del JRE, con algunas adiciones:
bin/
se ha ampliado con herramientas de desarrollo. El más importante de ellos es javac
; otros incluyen jar
, javadoc
y jshell
.jmods/
, que contiene archivos JMOD para la biblioteca estándar, se ha agregado. Estos archivos permiten utilizar la biblioteca estándar jlink
.JDK es un superconjunto de JRE y contiene todo lo que está en JRE, además de herramientas como los compiladores y depuradores necesarios para desarrollar applets y aplicaciones. JRE proporciona las bibliotecas, la máquina virtual Java (JVM) y otros componentes para ejecutar applets y aplicaciones escritas en el lenguaje de programación Java.
En términos simples: JDK es abuelo JRE es padre y JVM es su hijo. [es decir, JDK> JRE> JVM]
JDK = JRE + Herramientas de desarrollo / depuración
JRE = JVM + Clases de paquetes Java (como util, math, lang, awt, swing, etc.) + bibliotecas de tiempo de ejecución.
JVM = Sistema de cargador de clases + área de datos de tiempo de ejecución + Motor de ejecución.
En otras palabras, si eres un programador de Java, necesitarás JDK en tu sistema y este paquete también incluirá JRE y JVM, pero si eres un usuario normal al que le gusta jugar juegos en línea, solo necesitarás JRE y este paquete no tendrá JDK en eso.
JVM
La máquina virtual Java (JVM) es la máquina virtual que ejecuta los códigos de bytes 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 códigos de bytes que la JVM puede entender. También es la entidad que permite que Java sea un "lenguaje portátil" (escribir una vez, ejecutar en cualquier lugar). De hecho, hay implementaciones específicas de la JVM para diferentes sistemas (Windows, Linux, MacOS, consulte la lista de wikipedia ...), el objetivo es que con los mismos códigos de bytes 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 el lenguaje de programación Java. Además, dos tecnologías clave de implementación son 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 de 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 aplicaciones.
Kit de desarrollo de Java (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 JDK.
Proceso de compilación JIT (Cortesía: documentación de Oracle)
Desde el sitio web oficial de Java ...
JRE (entorno Java Runtime):
JDK (Kit de desarrollo de Java)
Una diferencia desde una perspectiva de depuración:
Para depurar en clases de sistema Java como String y ArrayList, necesita una versión especial de JRE que se compila con "información de depuración". El JRE incluido dentro del JDK proporciona esta información, pero el JRE normal no. JRE regular no incluye esta información para garantizar un mejor rendimiento.
¿Qué es la información de depuración? Aquí hay una explicación rápida tomada de esta publicación de blog :
Los compiladores modernos hacen un trabajo bastante bueno al convertir su código de alto nivel, con sus estructuras de control muy bien marcadas y anidadas y variables escritas arbitrariamente en una gran pila de bits llamada código de máquina (o código de bytes en el caso de Java), cuyo único propósito es para ejecutar lo más rápido posible en la CPU de destino (CPU virtual de su JVM). El código Java se convierte en varias instrucciones de código de máquina. Las variables se colocan por todas partes: en la pila, en registros o completamente optimizadas. Las estructuras y los objetos ni siquiera existen en el código resultante, son simplemente una abstracción que se traduce en compensaciones codificadas en búferes de memoria.
Entonces, ¿cómo sabe un depurador dónde detenerse cuando le pide que se interrumpa en la entrada de alguna función? ¿Cómo logra encontrar qué mostrarle cuando le pregunta por el valor de una variable? La respuesta es: información de depuración.
El compilador genera la información de depuración junto con el código de la máquina. Es una representación de la relación entre el programa ejecutable y el código fuente original. Esta información se codifica en un formato predefinido y se almacena junto con el código de la máquina. Muchos de estos formatos se inventaron a lo largo de los años para diferentes plataformas y archivos ejecutables.
JVM, JRE, JDK: estos son todos los pilares del lenguaje Java. Cada componente funciona por separado. JDK y JRE existen físicamente, pero JVM es una máquina abstracta que significa que no existe físicamente.
JVM es el subsistema de JDK y JRE que se utiliza para verificar el código intermedio conocido como "bytecode". Primero carga el "archivo de clase" (que tiene la extensión .c) generado por el compilador de Java (javac) a través del cargador de clases del subsistema JVM y la ubicación de memoria clasificada (área de clase, pila, registros de montón y PC) según su uso. Luego verifica todo el código de bytes para asegurarse de que se devuelve en Java y todos los accesos de memoria a la red. El trabajo del intérprete comienza después de eso, donde verifica todo el programa línea por línea. Los resultados finalmente se muestran en la consola / navegador / aplicación a través de JRE (Java Runtime Environment), que son las instalaciones de tiempo de ejecución.
JRE también es un subsistema de JDK que proporciona recursos de tiempo de ejecución como JVM, clases, archivos ejecutables como archivos .jar, etc.
JDK significa Kit de desarrollo de Java. Contiene todos los componentes necesarios utilizados en la programación Java, como clase, método, swing, AWT, paquete, Java (intérprete), javac (compilador), appletviewer (visor de aplicaciones applet), etc. Para concluir, contiene todos los archivos necesarios para el desarrollo aplicaciones, ya sean independientes o basadas en la web.
JRE
JRE es un acrónimo de Java Runtime Environment. Se utiliza para proporcionar un entorno de tiempo de ejecución. Es la implementación de JVM. Existe físicamente. Contiene un conjunto de bibliotecas + otros archivos que JVM utiliza en tiempo de ejecución.
JDK
JDK es un acrónimo de Java Development Kit. Existe físicamente. Contiene herramientas de desarrollo JRE +.
Enlace: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
Por lo general, cuando solo le importa ejecutar programas Java en su navegador o computadora, solo instalará JRE. Es todo lo que necesitas. Por otro lado, si planea hacer alguna programación Java, también necesitará JDK.
JVM, JRE y JDK dependen de la plataforma porque la configuración de cada sistema operativo es diferente. Pero, Java es independiente de la plataforma.
Java Virtual Machine (JVM) es un sistema de tiempo de ejecución que ejecuta bytecode de Java.
JRE es el entorno (bibliotecas estándar y JVM) requerido para ejecutar aplicaciones Java.
El JDK incluye las herramientas de desarrollo de línea de comandos JRE plus, como compiladores y depuradores que son necesarios o útiles para desarrollar applets y aplicaciones.
Aquí hay una respuesta simple directamente de Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/
Java SE Runtime Environment (JRE)
El JRE proporciona las bibliotecas, la máquina virtual Java y otros componentes necesarios para que pueda ejecutar applets y aplicaciones escritas en el lenguaje de programación Java. Este entorno de tiempo de ejecución se puede redistribuir con aplicaciones para que sean independientes.
Kit de desarrollo Java SE (JDK)
El JDK incluye las herramientas de desarrollo de línea de comandos JRE plus, como compiladores y depuradores que son necesarios o útiles para desarrollar applets y aplicaciones.
Si desea ejecutar programas Java, pero no desarrollarlos, descargue Java Run-time Environment o JRE. Si desea desarrollarlos, descargue el kit de desarrollo de Java o JDK
Llamemos a JDK es un kit que incluye lo que esas cosas necesitan para desarrollar y ejecutar aplicaciones Java.
JDK se ofrece como entorno de desarrollo para crear aplicaciones, componentes y applets.
Contiene todo lo que necesita para ejecutar aplicaciones Java en forma compilada. No necesitas ninguna biblioteca y otras cosas. Todas las cosas que necesitas están compiladas.
JRE no se puede usar para el desarrollo, solo se usa para ejecutar las aplicaciones.
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 el bytecode de Java.
JRE es un acrónimo de Java Runtime Environment. Se utiliza para proporcionar un entorno de tiempo de ejecución. Es la implementación de JVM. Existe físicamente. Contiene un conjunto de bibliotecas + otros archivos que JVM utiliza en tiempo de ejecución
JDK es un acrónimo de Java Development Kit, existe físicamente y contiene herramientas de desarrollo JRE +.
Si es un programador de Java , necesitará JDK en su sistema y este paquete también incluirá JRE y JVM, pero si es un usuario normal al que le gusta jugar juegos en línea, solo necesitará JRE y este paquete no tendrá JDK. .
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 el bytecode de Java.
Las JVM están disponibles para muchas plataformas de hardware y software. JVM, JRE y JDK dependen de la plataforma porque la configuración de cada sistema operativo es diferente. Pero, Java es independiente de la plataforma.
JRE
Contiene todo lo que necesita para ejecutar aplicaciones Java en forma compilada. No necesitas ninguna biblioteca y otras cosas. Todas las cosas que necesitas están compiladas.
JRE no se puede usar para el desarrollo, solo se usa para ejecutar las aplicaciones.
Kit de desarrollo Java SE (JDK)
El JDK incluye las herramientas de desarrollo de línea de comandos JRE plus, como compiladores y depuradores que son necesarios o útiles para desarrollar applets y aplicaciones.
(Fuentes: Preguntas y respuestas de GeeksForGeeks , Descripción general de la plataforma Java )
Una comprensión clara de estos términos (JVM, JDK, JRE) es esencial para comprender su uso y sus diferencias.
JVM Java Virtual Machine (JVM) es un sistema de tiempo de ejecución que ejecuta el código de bytes de Java. La JVM es como una computadora virtual que puede ejecutar un conjunto de instrucciones compiladas y manipular ubicaciones de memoria. Cuando un compilador de Java compila el código fuente, genera un conjunto de instrucciones altamente optimizado llamado bytecode en un archivo .class. La JVM interpreta estas instrucciones de bytecode y las convierte en código específico de la máquina para su ejecución.
JDK El Kit de desarrollo de Java (JDK) es un entorno de desarrollo de software que puede usar para desarrollar y ejecutar aplicaciones Java. Incluye el JRE y un conjunto de herramientas de programación, como un compilador de Java, un intérprete, un visor de aplicaciones y un visor de documentos. El JDK se implementa a través de las plataformas Java SE, Java EE o Java ME.
JRE El Java Runtime Environment (JRE) es una parte del JDK que incluye una JVM, clases principales y varias bibliotecas que admiten el desarrollo de aplicaciones. Aunque el JRE está disponible como parte del JDK, también puede descargarlo y usarlo por separado.
Para una comprensión completa, puede ver mi Blog: Jdk Jre Jvm y diferencias
jdk es necesario para compilar en código y convertir código java en códigos de bytes, mientras que jre es necesario para ejecutar los códigos de bytes.
JDK incluye las herramientas de desarrollo de línea de comandos JRE plus, como compiladores y depuradores que son necesarios o útiles para desarrollar applets y aplicaciones.
JRE es básicamente la máquina virtual Java donde se ejecutan sus programas Java. También incluye complementos del navegador para la ejecución de Applet.
JDK es una máquina abstracta. Es una especificación que proporciona un entorno de tiempo de ejecución en el que se puede ejecutar el bytecode de Java.
Entonces, básicamente JVM <JRE <JDK según @Jaimin Patel dijo.
La diferencia entre JDK y JRE es que JDK es el kit de desarrollo de software para Java, mientras que JRE es el lugar donde ejecuta sus programas.
supongamos que si usted es un desarrollador, su función es desarrollar el programa y ejecutarlo. por lo tanto, debe tener un entorno para desarrollar y ejecutar, que es proporcionado por JDK.
supongamos que si usted es un cliente, entonces no tiene que preocuparse por el desarrollo. Lo único que necesita es un entorno para ejecutar el programa y obtener solo resultados, que es proporcionado por JRE.
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
JRE
JRE es un acrónimo de Java Runtime Environment. Se utiliza para proporcionar un entorno de tiempo de ejecución. Es la implementación de JVM. Existe físicamente. Contiene un conjunto de bibliotecas + otros archivos que JVM usa en tiempo de ejecución.
La implementación de JVM también es lanzada activamente por otras compañías además de Sun Micro Systems.
JDK
JDK es un acrónimo de Java Development Kit. Existe físicamente. Contiene herramientas de desarrollo JRE +.