Diccionario

JVM (máquina virtual de Java)

El programa que ejecuta el bytecode de Java, Kotlin y otros lenguajes, y que hace que el mismo programa funcione en cualquier sistema.

La JVM lee el bytecode (archivos .class o .jar), gestiona la memoria con un recolector de basura y traduce sobre la marcha el código a instrucciones del procesador.

Para programar se instala un JDK (kit de desarrollo), que incluye la JVM, el compilador javac y otras herramientas. Además de Java, la usan Kotlin, Scala y Groovy.

Un ejemplo

Una aplicación de servidor escrita en Kotlin se empaqueta en un .jar y funciona igual en un servidor Linux que en tu portátil con Windows.

Por qué importa

La JVM es la base sobre la que corren todos los programas Java y también otros lenguajes como Kotlin, Scala o Groovy. Si trabajas con ellos, tarde o temprano verás mensajes de error que mencionan la JVM, como la falta de memoria o una versión incompatible, y saber qué es te ayuda a entenderlos.

Se encarga además de tareas que en otros lenguajes haces a mano, sobre todo la gestión automática de memoria con el recolector de basura. También explica por qué Java mantiene la promesa de «escribe una vez, ejecuta en cualquier parte»: lo que cambia entre sistemas es la JVM instalada, no tu programa.

Confusiones frecuentes

Conviene distinguir tres siglas que se mezclan constantemente: JVM es la máquina virtual que ejecuta el bytecode, JRE es el entorno para ejecutar programas y JDK es el kit de desarrollo, que incluye además el compilador javac y otras herramientas. Para programar necesitas el JDK, mientras que para solo ejecutar una aplicación basta con el entorno de ejecución. Tampoco es una única pieza de software: existen varias implementaciones, como HotSpot, la más habitual.

Preguntas frecuentes

¿Cómo sé qué versión de Java tengo?

Ejecuta java -version en la terminal. Para el compilador, javac -version.

¿Qué hago si aparece `OutOfMemoryError`?

La JVM se ha quedado sin memoria. Puedes ampliar el límite con la opción -Xmx, pero primero conviene comprobar si el programa retiene objetos innecesariamente.