Java es un lenguaje de programación orientado a objetos que compila a un formato intermedio llamado bytecode, y la JVM (Java Virtual Machine, máquina virtual de Java) es el programa que ejecuta ese bytecode en cualquier sistema operativo: por eso Java se describe como «se escribe una vez y corre en cualquier lado». Para programar necesitás el JDK (Java Development Kit, kit de desarrollo); para solo ejecutar un programa ya compilado alcanza con el JRE (Java Runtime Environment). Desde la versión 17, y también con Java 25 —la LTS (long-term support, soporte de largo plazo) vigente—, Oracle ofrece su JDK sin costo para cualquier uso, así que la vieja fama de que «Oracle Java siempre es de pago» ya no aplica. Acá vas a instalar el JDK, entender la sintaxis básica del lenguaje, y compilar y ejecutar tu primer programa paso a paso.
Ver índice de contenidos
¿Qué es Java y qué es la JVM?
Java es un lenguaje de programación de propósito general, orientado a objetos, creado para que un mismo programa corra sin cambios en distintos sistemas operativos. La forma en que lo logra es indirecta a propósito: cuando compilás un archivo de código fuente (el texto que escribís vos, con extensión .java), el resultado no es un ejecutable de Windows, Linux o macOS, sino un formato intermedio llamado bytecode, guardado en un archivo .class. Ese bytecode no lo entiende directamente ningún sistema operativo: lo entiende la JVM (Java Virtual Machine, máquina virtual de Java), un programa que sí existe en una versión distinta para cada sistema operativo y que se encarga de interpretar el bytecode y ejecutarlo ahí.
La consecuencia práctica es la que hizo famoso a Java desde los años noventa: compilás una sola vez, y ese mismo archivo .class corre en cualquier máquina que tenga una JVM instalada, sin volver a compilar. El costo de esa portabilidad es una capa intermedia de traducción, que hoy en día está muy optimizada y no suele ser un problema perceptible para la inmensa mayoría de las aplicaciones.
JDK, JRE y JVM: qué necesitás instalar
Antes de instalar nada conviene tener claros los tres nombres que más se confunden al empezar, porque cada uno hace una cosa distinta y uno contiene al otro.
| Componente | Qué incluye | Para qué sirve |
|---|---|---|
| JVM (máquina virtual) | El motor que interpreta el bytecode | Ejecutar un archivo .class ya compilado |
| JRE (entorno de ejecución) | La JVM + las bibliotecas estándar de Java | Ejecutar aplicaciones Java terminadas, sin programarlas |
| JDK (kit de desarrollo) | El JRE completo + el compilador javac y herramientas de desarrollo | Escribir, compilar y depurar tus propios programas Java |
Como esta guía es para programar, no solo para ejecutar programas ya hechos, lo que necesitás instalar es el JDK: trae todo lo demás incluido.
javac compila a bytecode independiente del sistema operativo, y el JDK contiene al JRE, que a su vez contiene a la JVM.¿Java sigue siendo gratis? Lo que cambió con las licencias de Oracle
Esta es la confusión más extendida entre quienes vuelven a Java después de un tiempo, o lo escuchan de terceros sin verificarlo: «Oracle Java es de pago». Fue cierto durante un período concreto, y dejó de serlo.
Durante varios años, usar el JDK de Oracle en producción sí requería una licencia comercial. Eso cambió con Java 17: desde esa versión, Oracle distribuye su propio JDK bajo términos que permiten usarlo sin costo para cualquier uso, incluida la producción, mientras esos términos sigan vigentes para esa versión concreta. Esa política se mantiene con Java 25, según la hoja de ruta de Oracle consultada el 29 de julio de 2026. En otras palabras: si instalás el JDK de Oracle hoy, no le debés nada a nadie por usarlo, aunque conviene revisar los términos de la versión puntual que instalás si tu proyecto es comercial y de largo plazo.
Esto no elimina la otra opción, que además es muy usada en la industria: OpenJDK. OpenJDK es el proyecto de código abierto que funciona como implementación de referencia del estándar de Java, publicado bajo licencia GPL. A partir de ese mismo código, distintas organizaciones arman y distribuyen sus propios instaladores: Oracle arma el suyo (Oracle JDK), y también lo hacen Eclipse Adoptium (con sus builds Temurin), Microsoft (con el Microsoft Build of OpenJDK) y Amazon (Corretto), entre otros. Todos ejecutan el mismo lenguaje y el mismo bytecode; lo que cambia es quién lo empaqueta, con qué calendario de actualizaciones y qué soporte comercial opcional ofrece.
| Aspecto | Oracle JDK | Distribuciones basadas en OpenJDK |
|---|---|---|
| Quién lo distribuye | Oracle | Eclipse Adoptium, Microsoft, Amazon y otros |
| Costo de uso | Sin costo bajo los términos vigentes desde Java 17 | Sin costo, bajo licencia GPL |
| Soporte comercial extendido | Premier y Extended, de pago y opcionales | Depende de cada proveedor |
| Base de código | La misma que OpenJDK | Implementación de referencia del estándar |
No importa demasiado cuál elijas: cualquier distribución basada en OpenJDK, incluido el JDK de Oracle, sirve para instalar, compilar y ejecutar los ejemplos que siguen.
Qué versión de Java instalar: Java 25 LTS
Java publica versiones nuevas cada seis meses, pero no todas reciben el mismo nivel de soporte. Algunas se marcan como LTS (long-term support, soporte de largo plazo) y reciben actualizaciones de seguridad durante varios años; el resto son versiones intermedias de vida corta, pensadas para quien quiere probar novedades del lenguaje antes de que lleguen a una LTS.
Según la hoja de ruta de Oracle consultada el 29 de julio de 2026, Java 25 es la LTS vigente: tuvo disponibilidad general el 16 de septiembre de 2025, con soporte Premier de Oracle hasta septiembre de 2030 y soporte Extended hasta septiembre de 2033. La LTS anterior, Java 21, sigue recibiendo soporte Premier hasta septiembre de 2028, así que todavía es una opción razonable si estás manteniendo un proyecto que ya la usa.
Para un proyecto nuevo, la recomendación general es instalar la LTS más reciente, es decir, Java 25 al momento de escribir esta guía. Si un curso, un framework o un empleador te pide explícitamente una versión anterior, instalá esa: Java permite tener varias versiones conviviendo en la misma máquina sin conflicto, siempre que sepas cuál estás usando en cada momento.
Cómo instalar el JDK en Windows, Linux y macOS
Instalar el JDK cambia según el sistema operativo, pero el resultado que buscás es siempre el mismo: tener los comandos java y javac disponibles desde la terminal.
Windows
La forma más simple es descargar el instalador .msi desde la página oficial de descargas de Java, o instalarlo con el gestor de paquetes winget si tu Windows lo tiene disponible. También podés optar por una distribución basada en OpenJDK como Eclipse Temurin (Adoptium), que trae su propio instalador gráfico. En cualquiera de los tres casos, el instalador configura solo la variable de entorno PATH, así que después de instalar podés abrir una terminal nueva y probar directamente java -version.
Linux
Acá conviene la advertencia más importante de esta sección: los nombres de paquete varían según la distribución, y no todas las distribuciones tienen todavía el paquete de Java 25 en sus repositorios estables al momento de escribir esto. Antes de copiar un comando apt install o dnf install de cualquier lado —incluida esta guía—, confirmá en la página oficial de descargas de Java o en el repositorio de tu distribución qué paquete corresponde a la versión que querés instalar. Si tu distribución todavía no lo tiene empaquetado, la alternativa segura es descargar el archivo comprimido del JDK desde la página oficial y descomprimirlo donde prefieras, agregando su carpeta bin al PATH manualmente.
macOS
Para macOS, Oracle distribuye un instalador .dmg con soporte tanto para procesadores Intel como para Apple Silicon. También es habitual instalar Java con Homebrew usando una fórmula de alguna distribución de OpenJDK. En los dos casos, verificá después de instalar con java -version y javac -version para confirmar que la terminal encuentra la versión que instalaste.
En 2013, un hilo del foro de Underc0de explicaba cómo configurar manualmente la variable PATH en Windows para poder usar javac, sobre Java 6 y Windows 7. Era un paso necesario en ese momento; hoy ya no aplica: los instaladores actuales de Windows, Linux y macOS configuran el PATH automáticamente, y solo hace falta tocarlo a mano si instalaste el JDK desde un archivo comprimido, sin usar ningún instalador.
Sintaxis básica de Java
Java es un lenguaje de tipado estático: cada variable tiene un tipo declarado que no cambia, y el compilador lo verifica antes de generar el bytecode. Estas son las reglas que vas a usar todo el tiempo:
- Todo el código vive dentro de una clase. No existen instrucciones sueltas a nivel de archivo, como sí pasa en otros lenguajes.
- Cada instrucción termina con un punto y coma (
;). - Los bloques de código (el cuerpo de una clase, un método o un condicional) van entre llaves
{ }. - Java distingue mayúsculas de minúsculas:
Nombreynombreson identificadores distintos. - Los tipos primitivos más usados son
int(números enteros),double(números con decimales),boolean(verdadero o falso) ychar(un solo carácter). El texto (String) no es un tipo primitivo: es una clase, aunque se use todo el tiempo como si lo fuera. - Los comentarios se escriben con
//para una línea, o entre/*y*/para varias.
// Variables con tipo declarado, una condición y un bucle
int edad = 20;
double promedio = 8.75;
boolean aprobado = promedio >= 6.0;
if (aprobado) {
System.out.println("Aprobado con " + promedio);
} else {
System.out.println("No aprobado");
}
for (int i = 1; i <= 3; i++) {
System.out.println("Vuelta " + i);
}
No hace falta memorizar todo esto de una sentada: con la clase, el punto y coma, las llaves y estos cuatro tipos primitivos alcanza para escribir el primer programa completo, que es lo que sigue.
Tu primera aplicación: Hola Mundo paso a paso
Con la sintaxis básica ya vista, este es el programa más pequeño posible en Java, explicado bloque por bloque.
public class HolaMundo {
public static void main(String[] args) {
System.out.println("¡Hola, mundo!");
}
}
public class HolaMundo: declara una clase pública llamadaHolaMundo. Esto no es arbitrario: el archivo tiene que llamarseHolaMundo.java, exactamente igual que la clase pública que contiene, con las mismas mayúsculas. Si no coinciden,javacrechaza la compilación.public static void main(String[] args): es el método por el que la JVM empieza a ejecutar el programa.publiclo hace visible desde afuera de la clase,staticpermite llamarlo sin crear un objeto primero,voidindica que no devuelve ningún valor, yString[] argsrecibe los argumentos que se le pasen al programa desde la línea de comandos.System.out.println(...): imprime un texto en la consola, seguido de un salto de línea.System.outes el flujo de salida estándar del sistema.
Compilar y ejecutar
- Guardar el archivoGuardalo como
HolaMundo.java, en una carpeta donde después vas a abrir la terminal. - CompilarEjecutá
javac HolaMundo.java. Si no hay errores, no aparece ningún mensaje, y se generaHolaMundo.classen la misma carpeta. - EjecutarEjecutá
java HolaMundo, sin la extensión.class. El comando espera el nombre de la clase, no el nombre de un archivo. - Ver el resultadoLa consola imprime
¡Hola, mundo!. - Si algo fallaVerificá con
java -versionyjavac -versionque ambos comandos respondan antes de seguir buscando el error en el código.
Errores frecuentes
- Ejecutar con la extensión.
java HolaMundo.classfalla. El comandojavaespera el nombre de la clase, sin.class:java HolaMundo. - Nombre de archivo y clase distintos. Si la clase pública se llama
HolaMundopero el archivo eshola.java,javacno compila. - Confundir JDK con JRE. Si solo instalaste un JRE (cada vez menos frecuente, porque casi todas las distribuciones actuales instalan el JDK completo) no vas a tener
javacdisponible para compilar, aunquejavasí funcione para ejecutar programas ya compilados por otra persona. - Creer que Oracle Java siempre es pago. Ya no es así desde Java 17; ver la sección de licencias más arriba.
- Pensar que hay que configurar el
PATHa mano siempre. Los instaladores actuales de Windows, Linux y macOS lo hacen solos; configurarlo a mano solo hace falta si instalaste desde un archivo comprimido, sin instalador. - Copiar un comando
apt/dnfde un tutorial sin verificar la versión. Los nombres de paquete cambian, y no todas las distribuciones tienen ya empaquetada la última versión de Java.
Preguntas frecuentes
¿Cuál es la diferencia entre JDK y JRE, y cuál necesito?
El JDK (Java Development Kit, kit de desarrollo de Java) y el JRE (Java Runtime Environment, entorno de ejecución de Java) resuelven necesidades distintas, y elegir mal entre los dos es un error común al empezar. El JRE incluye únicamente lo necesario para ejecutar un programa Java que ya fue compilado por otra persona: la JVM (máquina virtual) y las bibliotecas estándar. No incluye javac, el compilador, así que con un JRE podés correr aplicaciones Java pero no podés compilar tu propio código fuente. El JDK incluye todo lo del JRE y le suma el compilador javac, además de otras herramientas de desarrollo y depuración. Si vas a escribir y compilar programas Java —que es el objetivo de esta guía y de cualquier persona que esté aprendiendo el lenguaje— necesitás el JDK, no alcanza con el JRE. En la práctica esto simplifica la decisión: casi todas las distribuciones que se descargan hoy en día, tanto de Oracle como de OpenJDK, se instalan como JDK completo por defecto, así que en la mayoría de los casos no vas a tener que elegir entre uno y otro de forma explícita.
¿Java sigue siendo gratis? ¿Qué cambió con las licencias de Oracle?
Sí, Java sigue siendo gratuito, pero la afirmación merece precisión porque hubo un período real de confusión. Durante varios años, usar el JDK de Oracle en producción exigía una licencia comercial paga, y de ahí surgió la idea de que «Oracle Java es de pago» que todavía circula. Eso cambió a partir de Java 17: desde esa versión, Oracle distribuye su propio JDK bajo términos que permiten usarlo sin costo para cualquier tipo de uso, incluida la producción, mientras esos términos sigan vigentes para la versión instalada. Esa política sigue aplicando con Java 25, la LTS (long-term support, soporte de largo plazo) vigente según la hoja de ruta de Oracle consultada el 29 de julio de 2026. Además, nunca dejó de existir la alternativa de instalar una distribución basada en OpenJDK —como Eclipse Temurin, el Microsoft Build of OpenJDK o Amazon Corretto—, que son gratuitas bajo licencia GPL desde antes de ese cambio. En resumen: si instalás cualquier JDK actual, sea el de Oracle o uno basado en OpenJDK, no pagás nada por usarlo para aprender, desarrollar o poner en producción tus programas.
¿Qué entorno de desarrollo conviene para empezar?
Para empezar no hace falta un entorno de desarrollo integrado (IDE): con un editor de texto simple y una terminal alcanza para escribir, compilar con javac y ejecutar con java los primeros programas, que es exactamente lo que sigue esta guía. Esa fricción manual, de hecho, ayuda a entender qué hace cada comando antes de que un IDE lo automatice por vos. Cuando el código empiece a crecer, tres opciones cubren la mayoría de los casos. Visual Studio Code, con el paquete de extensiones para Java, es liviano y sirve tanto para Java como para otros lenguajes que probablemente uses después. IntelliJ IDEA, en su edición Community gratuita, está pensado específicamente para Java y ofrece autocompletado y refactorización muy maduros. Eclipse es la opción más veterana, todavía muy usada en entornos corporativos y educativos. Ninguna de las tres es una elección incorrecta: la diferencia real aparece cuando el proyecto crece y empezás a valorar la integración con herramientas de compilación, control de versiones y depuración que cada una ofrece de forma distinta.
¿Por qué me dice que javac no se reconoce como comando en Windows?
Ese mensaje significa que la terminal no encuentra el ejecutable javac en ninguna de las carpetas listadas en la variable de entorno PATH, aunque el JDK esté instalado en el disco. Antes de tocar nada, probá java -version en la misma terminal: si tampoco reconoce ese comando, el problema es que el JDK no terminó de instalarse o la terminal se abrió antes de instalarlo, así que cerrala y abrí una nueva. Si java sí funciona pero javac no, es probable que hayas instalado solo un JRE en lugar de un JDK completo, porque el JRE no incluye el compilador; revisá qué descargaste e instalá el JDK si hace falta. Si ambos comandos fallan y estás seguro de haber instalado el JDK, el instalador puede no haber agregado la carpeta bin del JDK al PATH; podés agregarla manualmente ubicando la carpeta de instalación (algo como C:\Program Files\Java\jdk-25\bin) y sumándola a las variables de entorno del sistema, o simplemente reinstalar usando el instalador oficial, que en la gran mayoría de los casos configura esto automáticamente.
¿Qué diferencia hay entre Oracle JDK y OpenJDK?
OpenJDK es el proyecto de código abierto que funciona como implementación de referencia del estándar de Java, publicado bajo licencia GPL, y es la base de código a partir de la cual se arman prácticamente todos los JDK que existen hoy, incluido el de Oracle. Oracle JDK es, específicamente, el build que Oracle compila, empaqueta y distribuye a partir de ese código, y que desde Java 17 también se puede usar sin costo para cualquier propósito bajo los términos vigentes de esa versión. La diferencia práctica más relevante no es técnica sino de quién lo distribuye y qué soporte comercial opcional hay detrás: Oracle ofrece soporte de pago Premier y Extended más allá del período estándar, mientras que otras distribuciones basadas en OpenJDK, como Eclipse Temurin, el Microsoft Build of OpenJDK o Amazon Corretto, tienen sus propios calendarios de mantenimiento y soporte según el proveedor. Para aprender el lenguaje, escribir la sintaxis básica o compilar los ejemplos de esta guía, el comportamiento es el mismo lenguaje y el mismo bytecode en cualquiera de las opciones: la elección importa más cuando el proyecto es grande y de largo plazo.
¿Cómo ejecuto mi primer programa después de compilarlo?
Después de compilar con javac MiPrograma.java vas a tener en la misma carpeta un archivo MiPrograma.class con el bytecode. Para ejecutarlo, usá el comando java seguido del nombre de la clase, sin extensión y sin la ruta del archivo: java MiPrograma. Es un error frecuente escribir java MiPrograma.class, incluyendo la extensión, porque el comando java no espera el nombre de un archivo sino el nombre de una clase que va a buscar entre los archivos .class disponibles. Para que esto funcione, tenés que estar parado en la terminal dentro de la misma carpeta donde quedó el archivo .class, o indicarle a java dónde buscar con la opción -cp seguida de la ruta correspondiente. Si el programa se ejecutó bien, vas a ver en la consola exactamente lo que indican tus instrucciones System.out.println; si en cambio aparece un error de tipo NoClassDefFoundError o ClassNotFoundException, casi siempre significa que java está buscando el archivo .class en una carpeta distinta de la que realmente está.
Fuentes
Documentación oficial y material de la comunidad consultados para esta guía. Fecha de consulta: 29 de julio de 2026.
Aportes de la comunidad Underc0de
- Underc0de, foro. Como compilar programas Java en la consola de comandos de Windows, por tar3kw0rm3d, sección Java. Explica cómo configurar el
PATHa mano sobre Java 6 y Windows 7. Es un antecedente histórico del interés de la comunidad por Java: hoy ya no aplica, porque los instaladores actuales lo hacen solos. - Underc0de, foro. Curso - Java desde 0, por iatsm, sección Java. Es solo un enlace a un curso de terceros, sin contenido técnico propio en el hilo.
Documentación oficial
- Oracle. Java SE Support Roadmap. Fechas de disponibilidad y de fin de soporte de cada versión de Java.
- OpenJDK. JDK 25 project. Página oficial del proyecto de la versión 25 del JDK.
- Oracle. Java downloads. Instaladores oficiales por sistema operativo.
- Oracle. javac (manual, JDK 25). Referencia del compilador de Java.
- Oracle. Trail: Getting Started — Hello World. Tutorial oficial del primer programa en Java.
- Microsoft. Install the Microsoft Build of OpenJDK. Guía de instalación de una distribución de OpenJDK.