JDK vs. JRE

jdk set of tools

Cuando nos piden “instalar Java” (a secas) en nuestra máquina, es importante tener en claro la diferencia entre:

Para tener el listado completo de las herramientas que trae OpenJDK (una de las tantas variantes), recomendamos ingresar a esta página.

Arquitectura general del entorno Java

En este diagrama vemos el proceso de desarrollo de un programa Java desde que lo escribimos hasta que se ejecuta en una máquina (nuestra o de un usuario). Para compilar el programa Java a un código intermedio o bytecode necesitamos el ejecutable javac, que viene con el JDK. El archivo .class generado puede ser interpretado en cualquier otro sistema operativo, solo necesitamos tener el JRE adecuado. Ejecutamos entonces el programa java (o javaw en Windows) pasando como argumento nuestro archivo .class para que el bytecode sea interpretado al código de la máquina.


proceso de JDK

Tu IDE integra todas estas herramientas de manera que cada vez que grabás un archivo Java realiza la compilación para generar el .class y ejecutarlo desde el mismo entorno. Por eso recordemos que un IDE es un Integrated Development Environment.

Desarrollo en Kotlin/JVM

Haciendo la aclaración de que hay variantes de Kotlin que no necesitan la JDK (Kotlin Native o bien Kotlin/JS), en las materias Algoritmos 2, Algoritmos 3 y Programación con Herramientas Modernas trabajamos con Kotlin/JVM que precisan instalarse la JDK.

De esa manera cuando generamos nuestro archivo .kt con el código fuente, el compilador automáticamente genera el bytecode asociado (el .class, que está en la carpeta build/classes/kotlin) utilizando tanto el compilador de Kotlin como las herramientas que trae la JDK.


proceso de desarrollo en Kotlin

Como estamos trabajando dentro de un IDE, este paso adicional es transparente para nosotros. Solo debemos tener en cuenta que además del plugin de Kotlin, necesitaremos tener instalada una JDK para que el proceso de fondo convierta los archivos .kt a .class.

Como resultado, nuestros programas pueden ejecutarse utilizando la máquina virtual de Java a partir de cualquier JRE.