Pregunta ¿Cuál es la diferencia entre JDK y JRE?


¿Cuál es la diferencia entre JDK y JRE?
¿Cuáles son sus roles y cuándo debo usar uno u otro?


678
2017-12-15 10:19


origen


Respuestas:


JRE: Java Runtime Environment. Básicamente es la Máquina Virtual Java donde se ejecutan sus programas Java. También incluye complementos de navegador para la ejecución de Applet.

JDK: Es el Kit de desarrollo de software completo para Java, que incluye JRE, y los compiladores y herramientas (como JavaDoc y Java Debugger) para crear y compilar programas.

Por lo general, cuando solo te importa ejecutar programas Java en tu navegador o computadora, solo instalarás JRE. Es todo lo que necesitas. Por otro lado, si planeas hacer algo de programación Java, también necesitarás JDK.

A veces, aunque no está planeando hacer ningún desarrollo de Java en una computadora, aún necesita el JDK instalado Por ejemplo, si está implementando una aplicación web con JSP, usted está técnicamente  sólo ejecutar programas Java dentro del servidor de aplicaciones. Por qué necesitarías JDK ¿entonces? Porque el servidor de aplicaciones convertirá JSP en Servlets y uso JDK para compilar los servlets. Estoy seguro de que podría haber más ejemplos.


904
2017-12-15 10:21



Pablo tiene mucha razón. Esta es solo información adicional:

"Los JRE"es, como su nombre lo indica, un ambiente. Básicamente es un grupo de directorios con archivos relacionados con Java, a saber:

  • / bin con programas ejecutables como java y (para Windows) javaw, que son esencialmente el programa que es la máquina virtual Java;
  • / lib con una gran cantidad de archivos de apoyo: algunos jars, archivos de configuración, archivos de propiedades, fuentes, sonidos, íconos ... todos los "adornos" de Java. Lo más importante es rt.jar y posiblemente algunos de sus hermanos, que contienen la "API de Java", es decir, el código de la biblioteca de Java.
  • En algún lugar, posiblemente escondido por el instalador en algún directorio especificado por el sistema operativo, son algunos .DLLs (para Windows) o .so's (Unix / Linux) con código binario nativo compatible, a menudo específico del sistema.

los JDK es también un conjunto de directorios. Se parece mucho al JRE pero contiene un directorio (llamado JRE) con un JRE completo, y tiene una serie de herramientas de desarrollo, lo más importante es el compilador de Java javac en su bin directorio.


111
2017-12-15 10:54



enter image description here

JDK es un superconjunto de JRE, y contiene todo lo que hay en JRE, además de herramientas como compiladores y depuradores necesarios para desarrollar applets y aplicaciones. JRE proporciona bibliotecas, Java Virtual Machine (JVM) y otros componentes para ejecutar applets y aplicaciones escritas en el lenguaje de programación Java.


97
2018-03-20 06:24



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 + Java Packages Classes (como util, math, lang, awt, swing, etc.) + bibliotecas de tiempo de ejecución.

JVM = Sistema de carga de clase + área de datos de tiempo de ejecución + Motor de ejecución.

En otras palabras, si usted es un programador de Java, necesitará JDK en su sistema y este paquete también incluirá JRE y JVM, pero si usted es un usuario normal y le gusta jugar en línea, solo necesitará JRE y este paquete no tendrá JDK en eso.

JVM:

La máquina virtual de Java (JVM) es la máquina virtual que ejecuta los bytecodes de Java. La JVM no comprende el error tipográfico de Java, por eso compila sus archivos * .java para obtener archivos * .class que contengan códigos de byte comprensibles para la JVM. 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)

Java Runtime Environment (JRE) proporciona bibliotecas, Java Virtual Machine y otros componentes para ejecutar applets y aplicaciones escritos en el lenguaje de programación Java. Además, dos tecnologías de implementación clave 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 a través de una red. También es la base de las tecnologías en la plataforma Java 2, Enterprise Edition (J2EE) para el desarrollo y la implementación de software empresarial. 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 hay en el JRE, además de herramientas como los compiladores y los 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)

JDK > JRE > JVM


68
2017-12-29 12:07



Desde el sitio web oficial de Java ...

JRE (entorno de tiempo de ejecución de Java):

  • Es una implementación de Java Virtual Machine * que realmente ejecuta programas Java.
  • Java Runtime Environment es un complemento necesario para ejecutar programas Java.
  • El JRE es más pequeño que el JDK, por lo que necesita menos espacio en disco.
  • El JRE se puede descargar / apoyar libremente desde https://www.java.com
  • Incluye las bibliotecas JVM, Core y otros componentes adicionales para ejecutar aplicaciones y applets escritos en Java.

JDK (Kit de desarrollo de Java)

  • Es un paquete de software que puede usar para desarrollar aplicaciones basadas en Java.
  • Se necesita Java Development Kit para desarrollar aplicaciones Java.
  • El JDK necesita más espacio en disco ya que contiene el JRE junto con varias herramientas de desarrollo.
  • El JDK se puede descargar / apoyar libremente desde https://www.oracle.com/technetwork/java/javase/downloads/
  • Incluye JRE, conjunto de clases de API, compilador de Java, Webstart y archivos adicionales necesarios para escribir aplicaciones y applets de Java.

24
2018-04-01 13:24



Una diferencia de una perspectiva de depuración:

Para depurar en las clases del sistema Java, como String y ArrayList, necesita una versión especial del JRE que se compila con "información de depuración". El JRE incluido dentro del JDK proporciona esta información, pero el JRE regular 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 en el blog:

Los compiladores modernos hacen un buen trabajo al convertir su código de alto nivel, con sus estructuras de control bien anidadas y sus variables arbitrariamente tipadas en una gran pila de bits llamada código máquina (o bytecode en el caso de Java), cuyo único propósito es para ejecutar lo más rápido posible en la CPU objetivo (CPU virtual de su JVM). El código de Java se convierte en varias instrucciones de código de máquina. Las variables se colocan por todos lados: en la pila, en los registros o completamente optimizadas. Las estructuras y los objetos ni siquiera existen en el código resultante, son simplemente una abstracción   eso se traduce en compensaciones codificadas en búferes de memoria.

Entonces, ¿cómo sabe un depurador dónde detenerse cuando le pide que se rompa en la entrada de alguna función? ¿Cómo se las arregla para encontrar qué mostrarle cuando le pide el valor de una variable?   La respuesta es - información de depuración.

La información de depuración es generada por el compilador junto con el código de máquina. Es una representación de la relación entre el programa ejecutable y el código fuente original. Esta información está codificada en un formato predefinido y se almacena junto con el código de máquina. Muchos de estos formatos se inventaron a lo largo de los años para diferentes plataformas y archivos ejecutables.


21
2017-07-09 17:56



JRE

JRE es un acrónimo de Java Runtime Environment. Se utiliza para proporcionar un entorno de ejecución. Es la implementación de JVM. Existe físicamente. Contiene un conjunto de bibliotecas y 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 te importa ejecutar programas Java en tu navegador o computadora, solo instalarás JRE. Es todo lo que necesitas. Por otro lado, si planea hacer algo de programación Java, también necesitará JDK.


7
2018-04-21 08:13



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 en tiempo de ejecución que ejecuta bytecode de Java.

JRE es el entorno (bibliotecas estándar y JVM) necesarios 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 aplicaciones y applets.


7
2017-09-02 09:00



Aquí hay una respuesta simple directamente de Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/

Java SE Runtime Environment (JRE)

JRE proporciona las bibliotecas, la máquina virtual Java y otros componentes necesarios para 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 autónomos.

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 aplicaciones y applets.


6
2018-05-08 18:01



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.

JDK

Vamos a llamar JDK es un kit que incluye lo que necesitan desarrollar y ejecutar aplicaciones Java.

JDK se proporciona como entorno de desarrollo para crear aplicaciones, componentes y applets.

JRE

Contiene todo lo que necesita para ejecutar aplicaciones Java en forma compilada. No necesitas bibliotecas ni otras cosas. Todo lo que necesitas está compilado.

JRE no se puede usar para el desarrollo, solo se usa para ejecutar las aplicaciones.


6
2017-11-01 03:39



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 bytecode java.

JRE es un acrónimo de Java Runtime Environment. Se utiliza para proporcionar un entorno de ejecución. Es la implementación de JVM. Existe físicamente. Contiene un conjunto de bibliotecas y otros archivos que JVM usa en tiempo de ejecución.

JDK es un acrónimo de Java Development Kit. Existe físicamente. Contiene herramientas de desarrollo JRE +.


5
2017-09-28 15:32