it-swarm-es.com

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

¿Cuál es la diferencia entre JDK y JRE?
¿Cuáles son sus funciones y cuándo debo usar una u otra?

791
i2ijeya

ElJREes el Java Runtime Environment . Es un paquete de todo lo necesario para ejecutar un programa Java compilado, incluida la Máquina Virtual de Java (JVM), la Biblioteca de clases de Java, el comando Java y otra infraestructura. Sin embargo, no se puede utilizar para crear nuevos programas.

ElJDKes el Java Development Kit , el SDK completo para Java. Tiene todo lo que JRE tiene, 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 realizar alguna programación Java, necesita instalar el JDK en su lugar.

A veces, incluso si no planea realizar ningún desarrollo de Java en una computadora, todavía necesita el JDK instalado. 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? Debido a que el servidor de aplicaciones convertirá JSP en servlets de Java y necesita utilizar el JDK para compilar los servlets. Estoy seguro de que hay más ejemplos.

1049
Pablo Santa Cruz

La respuesta anterior (por Pablo) es muy correcta. Esto es sólo información adicional.

ElJREes, como su nombre lo indica, un entorno . Es básicamente un montón de directorios con archivos relacionados con Java, a saber:

  • bin/ contiene los programas ejecutables de Java. El más importante es Java (y para Windows, javaw también), que lanza la JVM. También hay otras utilidades aquí, 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 .jars, archivos de configuración, archivos de propiedades, fuentes, traducciones, certificados, etc. - todos los "recortes" de Java. El más importante es modules, un archivo que contiene los archivos .class de la biblioteca estándar de Java.
  • A un cierto nivel, la biblioteca estándar de Java necesita llamar al código nativo. Para este propósito, el JRE contiene algunos archivos .dll (Windows) o .dylib (macOS) o .so (Linux) bajo bin/ o lib/ con un código binario nativo específico para el sistema.

ElJDKes también un conjunto de directorios. Es un superconjunto del JRE, con algunas adiciones:

  • bin/ ha sido ampliado con herramientas de desarrollo. El más importante de ellos es javac; otros incluyen jar, javadoc y jshell.
  • Se ha agregado jmods/, que contiene los archivos JMOD para la biblioteca estándar. Estos archivos permiten que la biblioteca estándar se utilice con jlink.
124
Carl Smotricz

enter image description here

JDK es un superconjunto de JRE y contiene todo lo que hay 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 de Java (JVM) y otros componentes para ejecutar applets y aplicaciones escritas en el lenguaje de programación Java.

115
Chinbold Gansukh

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 + Paquetes de Java Clases (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 usted es un programador de Java, necesitará JDK en su sistema y este paquete incluirá JRE y JVM también, pero si es un usuario normal que le gusta jugar juegos en línea, solo necesitará JRE y este paquete no tendrá JDK en ello.

JVM:

La máquina virtual de Java (JVM) es la máquina virtual que ejecuta los bytecodes de Java. La JVM no comprende el código fuente de Java, por eso compila los archivos * .Java para obtener archivos * .class que contienen los códigos de bytes comprensibles por 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, existen implementaciones específicas de JVM para diferentes sistemas (Windows, Linux, MacOS, consulte la lista de wikipedia ...), el objetivo es que con los mismos códigos de byte 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 de Java y otros componentes para ejecutar applets y aplicaciones escritas 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 en una red. También es la base de las tecnologías en la plataforma Java 2, Enterprise Edition (J2EE) para el desarrollo e implementación 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)

 JDK > JRE > JVM

85
Jaimin Patel

Desde el sitio web oficial de Java ...

JRE (entorno de Java Runtime):

  • Es una implementación de la Máquina Virtual Java * que en realidad 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 el disco.
  • El JRE se puede descargar/admitir libremente desde https://www.Java.com
  • Incluye la JVM, las bibliotecas Core y otros componentes adicionales para ejecutar aplicaciones y applets escritos en Java.

JDK (Java Development Kit)

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

Una diferencia desde una perspectiva de depuración:

Para depurar en 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 normal no lo hace. El 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 entrada de blog :

Los compiladores modernos hacen un buen trabajo convirtiendo su código de alto nivel, con sus estructuras de control anidadas y bien anidadas y sus variables tipificadas 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 de Java se convierte en varias instrucciones de código de máquina. Las variables se insertan en todo el lugar: en la pila, en los registros o se optimizan por completo. 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 buffers de memoria.

Entonces, ¿cómo sabe un depurador dónde detenerse cuando le pide que interrumpa en la entrada a 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 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.

23
Steve

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 el 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.

8
Chintan Patni

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. Físicamente existe. Contiene un conjunto de bibliotecas + otros archivos que JVM usa en el tiempo de ejecución.

JDK

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

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

Por lo general, cuando solo le interesa ejecutar programas Java en su navegador o computadora, solo instalará JRE. Es todo lo que necesitas. Por otro lado, si planea realizar alguna programación Java, también necesitará JDK.

8
Nikhil Kumar

Si desea ejecutar programas Java, pero no desarrollarlos, descargue el entorno de tiempo de ejecución de Java o JRE. Si desea desarrollarlos, descargue el kit de desarrollo de Java o JDK

JDK

Llamemos a JDK es un kit, que incluye las cosas que se necesitan para desarrollar y ejecutar aplicaciones Java.

JDK se proporciona como entorno de desarrollo para la creación de aplicaciones, componentes y applets.

JRE

Contiene todo lo que necesita para ejecutar aplicaciones Java en forma compilada. No necesitas bibliotecas y otras cosas. Todas las cosas que necesitas están compiladas.

JRE no se puede utilizar para el desarrollo, solo se utiliza para ejecutar las aplicaciones.

7
nifCody

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 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 de 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.

7
Alex

JVM, JRE, JDK: estos son todos los ejes del lenguaje Java. Cada componente trabaja por separado. Jdk y Jre existen físicamente, pero Jvm es una máquina abstracta que significa que no existe físicamente.

JVMes un subsistema de JDK y JRE que se usa para verificar el código intermedio conocido como Bytecode. Primero carga "archivo de clase" con la extensión .c generada 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, pila y registros de PC) de acuerdo con el uso. Luego, verifique todos los Bytecode para asegurarse de que se devuelvan en Java y de que la red tenga acceso a la accesibilidad de la memoria. Después de que el trabajo del interpretador comience, el interpretador verifica la línea completa del programa y finalmente el resultado se muestra en la consola, el navegador y la aplicación a través de JRE (Java Runtime Environment), que ofrece funciones de tiempo de ejecución.

JREtambién es un subsistema de JDK que proporciona recursos de tiempo de ejecución como JVM, clases, archivos ejecutables como archivos .jar, etc.

JDKStands Java Development Kit contiene todos los componentes necesarios que se utilizan en la programación como clase, métodos, swing, AWT, paquete, Java (interpretador), javac (compilador), appletviewer (applet application viewer) etc. La conclusión final es el contenido de cada archivo que es útil para desarrollar una aplicación en forma independiente o basada en la web.

7
Kanan J

Si eres un programador de Java necesitarásJDKen tu sistema y este paquete incluirá JRE y JVM también, pero si eres usuario normal quien le gusta jugar juegos en línea, entonces solo necesitaráJREy este paquete no tendrá JDK.

JVM

JVM (Java Virtual Machine) es una máquina abstracta. Es una especificación que proporciona un entorno 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 bibliotecas y otras cosas. Todas las cosas que necesitas están compiladas.

JRE no se puede utilizar para el desarrollo, solo se utiliza para ejecutar las aplicaciones.

Kit de desarrollo de 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: GeeksForGeeks Q&A , Visión general de la plataforma Java )

6
Harita M

Una comprensión clara de estos términos (JVM, JDK, JRE) es esencial para comprender su uso y sus diferencias.

JVMJava Virtual Machine (JVM) es un sistema en tiempo de ejecución que ejecuta el bytecode 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 altamente optimizado de instrucciones llamado código de bytes en un archivo .class. La JVM interpreta estas instrucciones de código de bytes y las convierte en códigos específicos de la máquina para su ejecución.

JDKEl Java Development Kit (JDK) es un entorno de desarrollo de software que puede utilizar 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 applet y un visor de documentos. El JDK se implementa a través de las plataformas Java SE, Java EE o Java ME.

JREEl 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 completa comprensión puedes ver mi Blog: Jdk Jre Jvm y las diferencias

6

JVM (Java Virtual Machine) es una máquina abstracta. Es una especificación que proporciona un entorno 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 ejecución. Es la implementación de JVM. Físicamente existe. Contiene un conjunto de bibliotecas + otros archivos que JVM usa en el tiempo de ejecución.

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

5
Pruthvi Kumar

Simplemente :

JVM es la máquina virtual que se ejecuta en Java.

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.

5
ABP

jdk es necesario compilar para codificar y convertir código de Java en códigos de bytes, mientras que jre es necesario para ejecutar los códigos de bytes.

5
Mayank Jain

JDKincluye 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.

JREes básicamente la Máquina Virtual Java donde se ejecutan sus programas Java. También incluye complementos de navegador para la ejecución del applet.

JDKes una máquina abstracta. Es una especificación que proporciona un entorno de ejecución en el que se puede ejecutar el bytecode de Java.

Entonces, Básicamente JVM <JRE <JDK según @Jaimin Patel, dijo.

5
Dev

supongamos que, si usted es un desarrollador, su función es desarrollar el programa y ejecutar el programa. por lo que debe tener un entorno para desarrollar y ejecutar, que es proporcionado por JDK.

supongamos que, si usted es un cliente, no tiene que preocuparse por el desarrollo. Solo necesita un entorno para ejecutar el programa y obtener el resultado, que es proporcionado por JRE.

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

JDK = JRE + Herramientas de desarrollo

JRE = JVM + Clases de biblioteca

4
bishwas pokharel

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.

4
Samarth Shah

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 + otros archivos que JVM utiliza 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.

 enter image description here

JDK

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

 enter image description here

2
aKilleR