Cómo instalar Java en Windows — JDK 21 y VS Code listos en 10 minutos (y el «’java’ no se reconoce» que casi todos vemos el primer día)
Antes de escribir la primera línea de Java necesitas tener el entorno listo. Parece un trámite, pero es justo donde se atasca medio grupo la primera semana de FP2: descargas algo que se llama «Java», escribes java --version, y Windows te contesta que no sabe de qué le hablas. O funciona java pero no javac. O VS Code dice que no encuentra ningún JDK aunque lo acabas de instalar.
En esta guía instalamos el JDK 21 (y te cuento cuándo te conviene el 25), configuramos el PATH si hace falta, preparamos VS Code con la extensión oficial de Java y comprobamos que todo funciona compilando y ejecutando un programa de verdad. Si vienes de Python, también verás por qué en Java hay dos pasos (compilar y ejecutar) donde antes había uno. Cuando acabes, el siguiente paso es la sintaxis de Java desde cero.
Tabla de Contenidos
Qué necesitas antes de empezar
- Windows 10 u 11 de 64 bits (casi todos los portátiles de ahora). Si tienes un Windows con procesador ARM (algunos Surface y portátiles con Snapdragon), descarga la versión ARM64 en lugar de x64.
- Permisos de administrador en tu ordenador: el instalador del JDK y la configuración del PATH los piden.
- Unos 500 MB libres para el JDK y otros tantos para VS Code y sus extensiones.
- Si ya instalaste VS Code para Python siguiendo la guía de VS Code para Python, te ahorras el paso 5.
Todo lo que depende de Windows (los instaladores, las ventanas de Variables de entorno, PowerShell) lo describo, pero no lo he podido ejecutar para esta renovación. Lo que sí he ejecutado, una vez, son los programas y órdenes de Java del final, con el mismo JDK 21: las salidas que verás ahí son reales.
Qué es el JDK y por qué lo necesitas
En Python instalabas el intérprete: un programa que lee tu .py y lo ejecuta directamente. Java funciona distinto. Necesitas el JDK (Java Development Kit), un kit con dos herramientas principales:
javac, el compilador: lee tuHolaMundo.javay lo traduce a bytecode, un archivoHolaMundo.classque todavía no es código máquina de tu procesador, sino un lenguaje intermedio.java, que arranca la JVM (Java Virtual Machine): la máquina virtual que lee ese bytecode y lo ejecuta en tu ordenador, sea Windows, Linux o macOS.
Fíjate en el dibujo: son dos órdenes y dos programas distintos del mismo JDK.
¿Y el famoso JRE? Era la parte del JDK que solo ejecuta (la JVM y las bibliotecas, sin javac). Durante años se descargaba por separado para «tener Java» en el navegador. Hoy ya no se distribuye aparte: para programar necesitas el JDK completo, y el JDK ya lo trae todo.
Descargar «Java» desde java.com. Eso es el Java para usuarios (solo para ejecutar programas ya hechos, y en versión 8). Para FP2 necesitas el JDK, que se descarga desde Oracle o desde Adoptium, como en el paso 1.
¿JDK 21 o JDK 25?
Java saca una versión nueva cada seis meses, y cada dos años una de ellas es LTS (Long-Term Support, con soporte largo). En octubre de 2026 la situación es esta (lo he comprobado en la web de Oracle):
| Versión | Tipo | ¿Para FP2? |
|---|---|---|
| JDK 27 | La más reciente (septiembre de 2026) | No hace falta: es una versión de paso |
| JDK 25 | LTS actual (septiembre de 2025) | Vale perfectamente, y es la que conviene si empiezas de cero fuera de clase |
| JDK 21 | LTS anterior (septiembre de 2023) | La que usa esta guía: todo lo de FP2 funciona igual |
Todo lo que vas a programar en FP2 (clases, herencia, interfaces, colecciones, excepciones) funciona igual en el 21 y en el 25. Lo importante es que uses la misma versión que te pidan en clase y que tengas una sola instalada mientras aprendes, para que no te líes con cuál se está ejecutando.
Si eliges el JDK 25, sigue esta misma guía cambiando «21» por «25» en las rutas (jdk-25 en lugar de jdk-21). Los pasos son idénticos.
Paso 1 — Descargar el JDK 21
Tienes dos opciones, las dos gratuitas para estudiar:
Opción A: Oracle (la oficial). Ve a la página de descargas de Oracle: https://www.oracle.com/java/technologies/downloads/#java21. En la pestaña JDK 21, elige Windows y descarga el x64 Installer (el .exe). En octubre de 2026 el archivo se llama jdk-21.0.13.0.3_windows-x64_bin.exe; el número cambia con cada actualización, pero lo que importa es el 21 del principio.

Desde la actualización 21.0.13, Oracle publica el JDK 21 con su licencia OTN: es gratis para uso personal y de desarrollo (estudiar entra ahí), pero no para usarlo en producción en una empresa. El JDK 25, en cambio, sigue con la licencia NFTC, gratuita también en producción hasta septiembre de 2028. Para FP2 da igual; si quieres olvidarte de licencias, usa la opción B.
Opción B: Eclipse Temurin (Adoptium), libre y sin letra pequeña. Ve a https://adoptium.net/temurin/releases/?version=21, elige Windows, x64, JDK y versión 21, y descarga el .msi. Es el mismo Java (los dos salen del proyecto OpenJDK), compilado y probado por la Eclipse Foundation y con licencia libre. Es lo que más se usa en empresas que no quieren depender de Oracle.

Las dos opciones funcionan exactamente igual para FP2. Elige una y no instales las dos.
Paso 2 — Instalar Java en Windows: el JDK
Ejecuta el instalador que has descargado:
- Haz doble clic en el
.exe(Oracle) o en el.msi(Temurin). Si Windows pregunta si quieres permitir que la aplicación haga cambios, di que sí. - Avanza con Next (Siguiente). Deja la carpeta de instalación que viene por defecto: luego la vas a necesitar y es más fácil si es la estándar.
- Con Temurin verás una pantalla de funciones: si aparece la opción Set JAVA_HOME variable, márcala, y deja marcada la de añadir al PATH. Te ahorrarás el paso 4.
- Pulsa Install, espera y termina con Close.

El JDK se instala en una de estas carpetas (la tuya puede tener un número de versión más largo al final):
| Distribución | Carpeta | Donde están java.exe y javac.exe |
|---|---|---|
| Oracle | C:\Program Files\Java\jdk-21 | C:\Program Files\Java\jdk-21\bin |
| Temurin | C:\Program Files\Eclipse Adoptium\jdk-21.0.x.x-hotspot | la carpeta bin de dentro |
Apúntate esa ruta de bin: es la que usaremos si hay que tocar el PATH.
Paso 3 — Verificar la instalación
Cierra todas las terminales que tuvieras abiertas (las abiertas antes de instalar no ven los cambios) y abre una nueva: busca PowerShell o cmd en el menú Inicio. Escribe:
java --version
Con Oracle deberías ver algo con esta forma (los números exactos serán los de tu versión):
java 21.0.x 2026-xx-xx LTS Java(TM) SE Runtime Environment (build 21.0.x+x-LTS-xxx) Java HotSpot(TM) 64-Bit Server VM (build 21.0.x+x-LTS-xxx, mixed mode, sharing)
Con Temurin la primera línea empieza por openjdk 21.0.x y verás Temurin en las otras dos. Lo que tienes que buscar es el 21 al principio. Comprueba también el compilador, que es el que de verdad dice que tienes un JDK:
javac --version
Y tiene que responder con la misma versión:
javac 21.0.x
Y un truco que te salvará más de una vez: pregúntale a Windows qué java está usando.
where.exe java
En PowerShell hay que escribir where.exe (en cmd basta con where). Te devuelve las rutas de todos los java.exe que encuentra, en orden: el primero es el que se ejecuta. Si ahí aparece una carpeta de un Java antiguo, ya sabes por qué java --version te dice otra versión.
'java' no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable. Windows no encuentra java.exe en ninguna carpeta del PATH. Si acabas de instalar, primero cierra y abre la terminal; si sigue, ve al paso 4.
Paso 4 — Configurar el PATH manualmente (solo si el paso 3 falló)
El PATH es una lista de carpetas. Cuando escribes java, Windows no busca por todo el disco: recorre esas carpetas en orden y ejecuta el primer java.exe que encuentra. Si ninguna lo tiene, sale el error de arriba. Mira el dibujo:
Así que arreglarlo es añadir una línea a esa lista, la carpeta bin del JDK:
- Pulsa la tecla Windows y escribe variables de entorno. Abre Editar las variables de entorno del sistema.
- Haz clic en Variables de entorno…
- En Variables del sistema, selecciona Path y pulsa Editar…
- Pulsa Nuevo y pega la ruta de
binque apuntaste en el paso 2, por ejemploC:\Program Files\Java\jdk-21\bin. - Con Subir, mueve esa línea por encima de cualquier otra que hable de Java (por ejemplo una que termine en
Oracle\Java\javapathde una instalación antigua). - Ya que estás, crea JAVA_HOME: en Variables del sistema, pulsa Nueva…, nombre
JAVA_HOMEy valor la carpeta del JDK sin\bin(C:\Program Files\Java\jdk-21). Muchas herramientas (Maven, Gradle, algunos IDE) la buscan. - Acepta todas las ventanas con Aceptar, cierra la terminal, abre una nueva y repite el paso 3.
Poner en el PATH la carpeta del JDK (…\jdk-21) en lugar de su bin (…\jdk-21\bin). Windows mira dentro de cada carpeta de la lista, no en sus subcarpetas: si java.exe está un nivel más abajo, no lo ve.
Si no sabes la ruta exacta, abre el Explorador de archivos, entra en C:\Program Files, busca la carpeta del JDK, entra en bin, comprueba que dentro están java.exe y javac.exe, y copia la ruta de la barra de direcciones.
Paso 5 — Instalar VS Code
Si ya tienes VS Code del bloque de Python, sáltate este paso. Si no, ve a https://code.visualstudio.com, descarga el instalador para Windows y ejecútalo. Acepta las opciones por defecto y marca estas tres en la pantalla de tareas adicionales:
- Agregar «Abrir con Code» al menú contextual de archivos.
- Agregar «Abrir con Code» al menú contextual de directorios.
- Agregar a PATH.
Con las dos primeras podrás hacer clic derecho en tu carpeta de FP2 y abrirla directamente en VS Code; con la tercera podrás escribir code . en una terminal.
Paso 6 — Instalar la extensión Java en VS Code
VS Code, recién instalado, solo es un editor de texto con colores. Para que entienda Java (autocompletado, errores en rojo mientras escribes, botón de ejecutar y depurador) necesita la extensión oficial:
- Abre VS Code.
- Pulsa el icono de Extensiones de la barra lateral izquierda (o Ctrl + Mayús + X).
- Busca Extension Pack for Java.
- Pulsa Install en la que publica Microsoft.

El pack instala varias extensiones de una vez. En octubre de 2026 son estas (en la captura, que es de mayo, puede salir alguna distinta: Microsoft cambia la lista de vez en cuando):
| Extensión | Para qué sirve en FP2 |
|---|---|
| Language Support for Java (Red Hat) | Autocompletado, errores mientras escribes, saltar a la definición. Imprescindible |
| Debugger for Java | Puntos de ruptura y ejecución paso a paso. Imprescindible |
| Test Runner for Java | Ejecutar pruebas JUnit (lo verás más adelante) |
| Maven for Java y Gradle for Java | Proyectos con dependencias; en FP2 casi no los usarás |
| Project Manager for Java | El panel Java Projects con tus clases y paquetes |
Paso 7 — Configurar VS Code para Java
La primera vez que abras un archivo .java, la extensión busca el JDK por su cuenta (mira el PATH, JAVA_HOME y las carpetas habituales). Casi siempre lo encuentra. Si no:
- Abre la paleta de comandos con Ctrl + Mayús + P.
- Escribe Java: Configure Java Runtime y ábrelo.
- En la sección de JDK del proyecto, comprueba que aparece el JDK 21. Si no está, usa la opción para añadirlo y elige la carpeta del JDK (la de
C:\Program Files\…\jdk-21, sinbin).
Este es el mapa completo de lo que has instalado y de quién usa a quién:
Si VS Code se queja de que no encuentra Java pero en la terminal java --version funciona, cierra VS Code del todo y vuelve a abrirlo: igual que la terminal, solo ve el PATH que existía cuando arrancó.
Paso 8 — Crear tu carpeta de trabajo
Antes de escribir código, organiza dónde va a vivir. Una estructura clara desde el primer día te ahorra buscar «aquel ejercicio de arrays» entre veinte archivos sueltos en el Escritorio:
Documentos/
└── FP2/
├── java/
│ ├── tema1_sintaxis/
│ ├── tema2_variables/
│ └── ...
└── python/
└── ...
Para abrirla en VS Code: Archivo → Abrir carpeta… → Documentos\FP2\java → Seleccionar carpeta. Así el panel de la izquierda te enseña todos tus temas y la extensión de Java trata cada carpeta como un proyecto.
Comprueba que todo funciona: tu primer programa
Ahora la prueba de verdad: compilar y ejecutar. Crea en tema1_sintaxis un archivo llamado exactamente HolaMundo.java (con la H y la M mayúsculas) y escribe esto:
public class HolaMundo {
public static void main(String[] args) {
System.out.println("Hola, FP2: el JDK funciona");
System.out.println("Java " + Runtime.version().feature() + " listo para programar");
}
}
Línea a línea, sin entrar todavía en detalles (eso es el artículo de sintaxis):
public class HolaMundo: en Java todo vive dentro de una clase, y si espublictiene que llamarse igual que el archivo.public static void main(String[] args): el punto de entrada, lo primero que ejecuta la JVM.System.out.println(...): escribe una línea en la terminal.Runtime.version().feature(): pregunta a la JVM su versión principal. Es una forma de comprobar, desde dentro del programa, qué Java lo está ejecutando.
En VS Code basta con pulsar Run encima de main. Pero merece la pena hacerlo una vez a mano en la terminal para ver los dos pasos. Esta es la sesión real, ejecutada una vez con el JDK 21 (la hice en una terminal de Linux, por eso ves $ y ls; en PowerShell verás PS C:\…> y puedes usar dir, pero javac y java se comportan igual):
$ ls
HolaMundo.java
mal
$ javac HolaMundo.java
$ ls
HolaMundo.class
HolaMundo.java
mal
$ java HolaMundo
Hola, FP2: el JDK funciona
Java 21 listo para programar
$ java HolaMundo.class
Error: Could not find or load main class HolaMundo.class
Caused by: java.lang.ClassNotFoundException: HolaMundo.class
$ java HolaMundo.java
Hola, FP2: el JDK funciona
Java 21 listo para programar
$ cd mal
$ javac Hola.java
Hola.java:1: error: class HolaMundo is public, should be declared in a file named HolaMundo.java
public class HolaMundo {
^
1 error
Vamos por partes:
- Antes de compilar solo está
HolaMundo.java(y una carpetamalque uso al final). javac HolaMundo.javano escribe nada si todo va bien: en Java, como en C, el silencio es buena señal. Pero el segundolsenseña lo que ha hecho: ha aparecidoHolaMundo.class, el bytecode.java HolaMundoejecuta la clase. Ojo: se escribe el nombre de la clase, sin.class. Y la segunda línea confirma que lo ha ejecutado un Java 21.java HolaMundo.classes el error más repetido del primer día: Java interpretaHolaMundo.classcomo el nombre de una clase (la claseclassdel paqueteHolaMundo) y no la encuentra.java HolaMundo.java(desde Java 11) compila en memoria y ejecuta de una vez, sin dejar ningún.class. Es cómodo para programas de un solo archivo, como los primeros de FP2.- En la carpeta
malhay unHola.javaque contienepublic class HolaMundo.javacse niega: una clase pública tiene que estar en un archivo que se llame como ella.
Guardar el archivo como holamundo.java o Hola mundo.java. En Windows el sistema de archivos no distingue mayúsculas, pero Java sí: el nombre del archivo tiene que coincidir exactamente con el de la clase pública, mayúsculas incluidas.
Diferencia importante respecto a Python
En Python escribías python archivo.py y listo. En Java el camino tiene dos paradas:
| Python | Java | |
|---|---|---|
| Qué instalas | El intérprete (python) | El JDK (javac + java) |
| Pasos | Uno: python hola.py | Dos: javac HolaMundo.java y java HolaMundo |
| Qué se genera | Nada que tengas que tocar | HolaMundo.class (bytecode) |
| Cuándo ves los errores de sintaxis | Al ejecutar, cuando llega a esa línea | Al compilar, antes de ejecutar nada |
| Nombre del archivo | El que quieras | El de la clase pública, exacto |
Esa cuarta fila es la gran ventaja de compilar: si te falta un ; en la línea 40, javac te lo dice antes de ejecutar las 39 primeras. VS Code hace los dos pasos solo cuando pulsas Run, pero si hay un error de compilación no se crea el .class y no hay nada que ejecutar.
Problemas típicos y cómo resolverlos
'java' no se reconoce como un comando interno o externo. Windows no encuentra java.exe en el PATH. Cierra y abre la terminal; si sigue, paso 4.
java funciona pero javac no. Tienes un Java que no es un JDK completo (un Java de usuario de java.com) o el PATH apunta a una carpeta que solo tiene java.exe (como …\Oracle\Java\javapath). Ejecuta where.exe java y where.exe javac: tienen que salir de la misma carpeta bin del JDK 21.
java --version dice 1.8, 17 u otra versión. Hay un Java antiguo antes en el PATH. Con where.exe java verás cuál; sube la línea del JDK 21 en el PATH (paso 4) o desinstala el antiguo desde Configuración → Aplicaciones.
Error: Could not find or load main class HolaMundo.class. Has escrito .class al ejecutar. Es java HolaMundo.
class HolaMundo is public, should be declared in a file named HolaMundo.java. El nombre del archivo no coincide con el de la clase. Renombra el archivo (o la clase).
VS Code dice que no encuentra el JDK o que la versión es demasiado antigua. Cierra VS Code y ábrelo de nuevo; si sigue, Java: Configure Java Runtime (paso 7) y elige la carpeta del JDK 21.
El Run de VS Code no aparece encima de main. La extensión todavía está cargando (mira la barra de abajo) o el archivo no está dentro de la carpeta que abriste con Abrir carpeta.
Resumen — qué tienes instalado
| Pieza | Para qué | Cómo comprobarla |
|---|---|---|
| JDK 21 (Oracle o Temurin) | javac compila, java ejecuta en la JVM | java --version y javac --version |
PATH con …\jdk-21\bin | Que la terminal encuentre java y javac | where.exe java |
| JAVA_HOME | Que otras herramientas encuentren el JDK | echo $env:JAVA_HOME en PowerShell |
| VS Code + Extension Pack for Java | Escribir, ejecutar y depurar | Botón Run encima de main |
Documentos\FP2\java\ | Tener los temas ordenados | Abierta con Abrir carpeta |
Tres ideas para llevarte:
- Para programar en Java necesitas el JDK, no «Java» a secas:
javaccompila yjavaejecuta. - Si Windows no encuentra
java, el problema casi siempre es el PATH: tiene que incluir la carpetabindel JDK.where.exe javate dice cuál se está usando. - El archivo se llama igual que la clase pública, y se ejecuta con
java HolaMundo, sin.class.
Con el entorno listo, el siguiente paso es entender qué significa cada palabra de ese HolaMundo: lo vemos en Java desde cero: la sintaxis, donde escribimos el primer programa de FP2 línea a línea.
¿Te ha servido este artículo? Así puedes apoyar SergioLearns →




Qué es un sistema operativo — teoría con tu portátil en una tarde de estudio, una llamada a write() y la CPU que nunca descansa (y los tres programas que no se ejecutaban a la vez)