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.

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 tu HolaMundo.java y lo traduce a bytecode, un archivo HolaMundo.class que 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.

Cómo pasa un programa Java de código a ejecuciónHolaMundo.java pasa por javac y se convierte en HolaMundo.class (bytecode); la orden java arranca la JVM, que lo ejecuta y escribe en pantalla. El JDK reúne javac, la JVM y las bibliotecas.De HolaMundo.java a la pantallaHolaMundo.javacódigo fuenteHolaMundo.classbytecodeJVMlo ejecutaPantallaHola, FP2:el JDKfuncionajavacjavaJDK 21 = javac (compilador) + JVM (máquina virtual) + bibliotecasPython tenía un solo paso: python archivo.pyAtajo (Java 11+): java HolaMundo.java compila en memoria y ejecuta de una vez
Dos órdenes, dos programas del JDK: javac traduce a bytecode y java lo ejecuta en la JVM.

¿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ónTipo¿Para FP2?
JDK 27La más reciente (septiembre de 2026)No hace falta: es una versión de paso
JDK 25LTS actual (septiembre de 2025)Vale perfectamente, y es la que conviene si empiezas de cero fuera de clase
JDK 21LTS 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.

Página de descargas de Oracle con la pestaña JDK 21, la opción Windows y el enlace x64 Installer

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.

Página de descargas de Eclipse Temurin en Adoptium con los filtros Windows, x64, JDK y la versión 21

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:

  1. 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í.
  2. 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.
  3. 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.
  4. Pulsa Install, espera y termina con Close.
Asistente de instalación del JDK 21 en Windows con el botón Next

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ónCarpetaDonde están java.exe y javac.exe
OracleC:\Program Files\Java\jdk-21C:\Program Files\Java\jdk-21\bin
TemurinC:\Program Files\Eclipse Adoptium\jdk-21.0.x.x-hotspotla 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:

Búsqueda de java.exe en el PATHAl escribir java, Windows recorre en orden las carpetas del PATH: system32 no lo tiene, la carpeta bin del JDK 21 sí, así que ejecuta ese java.exe. Si ninguna lo tiene sale el error "no se reconoce como un comando interno o externo".Cómo encuentra Windows la orden java> java –versionEscribes en la terminalCarpetas del PATH, en orden1C:\Windows\system32no está2C:\Program Files\Java\jdk-21\bin¡aquí está java.exe!3…\Microsoft VS Code\binno hace falta mirarSi ninguna carpeta lo tiene, Windows responde:'java' no se reconoce como un comando interno o externo…
El paso 4 de la guía solo añade una línea a esta lista: la carpeta bin del JDK.

Así que arreglarlo es añadir una línea a esa lista, la carpeta bin del JDK:

  1. Pulsa la tecla Windows y escribe variables de entorno. Abre Editar las variables de entorno del sistema.
  2. Haz clic en Variables de entorno…
  3. En Variables del sistema, selecciona Path y pulsa Editar…
  4. Pulsa Nuevo y pega la ruta de bin que apuntaste en el paso 2, por ejemplo C:\Program Files\Java\jdk-21\bin.
  5. Con Subir, mueve esa línea por encima de cualquier otra que hable de Java (por ejemplo una que termine en Oracle\Java\javapath de una instalación antigua).
  6. Ya que estás, crea JAVA_HOME: en Variables del sistema, pulsa Nueva…, nombre JAVA_HOME y valor la carpeta del JDK sin \bin (C:\Program Files\Java\jdk-21). Muchas herramientas (Maven, Gradle, algunos IDE) la buscan.
  7. 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:

  1. Abre VS Code.
  2. Pulsa el icono de Extensiones de la barra lateral izquierda (o Ctrl + Mayús + X).
  3. Busca Extension Pack for Java.
  4. Pulsa Install en la que publica Microsoft.
Panel de extensiones de VS Code con Extension Pack for Java de Microsoft y su botón Install

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ónPara qué sirve en FP2
Language Support for Java (Red Hat)Autocompletado, errores mientras escribes, saltar a la definición. Imprescindible
Debugger for JavaPuntos de ruptura y ejecución paso a paso. Imprescindible
Test Runner for JavaEjecutar pruebas JUnit (lo verás más adelante)
Maven for Java y Gradle for JavaProyectos con dependencias; en FP2 casi no los usarás
Project Manager for JavaEl 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:

  1. Abre la paleta de comandos con Ctrl + Mayús + P.
  2. Escribe Java: Configure Java Runtime y ábrelo.
  3. 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, sin bin).

Este es el mapa completo de lo que has instalado y de quién usa a quién:

Mapa de la instalación de JavaTres piezas: el JDK en Program Files con javac.exe y java.exe en su carpeta bin; VS Code con el Extension Pack for Java, que usa ese JDK; y tu carpeta de FP2 en Documentos con los .java.Qué se instala y dóndeJDK 21 (Oracle o Temurin)C:\Program Files\Java\jdk-21\bin\javac.exe · java.exeVS Code+ Extension Packfor Javaeditar · Run · depurarTu carpeta de FP2Documentos\FP2\java\tema1_sintaxis\HolaMundo.javaVS Code usa el javac y el java del JDKy abre tu carpetaEl PATH apunta a …\jdk-21\bin para que la terminal también los encuentre
Si VS Code no encuentra el JDK, el problema está en la flecha de la izquierda (paso 7).

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 es public tiene 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:

  1. Antes de compilar solo está HolaMundo.java (y una carpeta mal que uso al final).
  2. javac HolaMundo.java no escribe nada si todo va bien: en Java, como en C, el silencio es buena señal. Pero el segundo ls enseña lo que ha hecho: ha aparecido HolaMundo.class, el bytecode.
  3. java HolaMundo ejecuta 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.
  4. java HolaMundo.class es el error más repetido del primer día: Java interpreta HolaMundo.class como el nombre de una clase (la clase class del paquete HolaMundo) y no la encuentra.
  5. 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.
  6. En la carpeta mal hay un Hola.java que contiene public class HolaMundo. javac se 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:

PythonJava
Qué instalasEl intérprete (python)El JDK (javac + java)
PasosUno: python hola.pyDos: javac HolaMundo.java y java HolaMundo
Qué se generaNada que tengas que tocarHolaMundo.class (bytecode)
Cuándo ves los errores de sintaxisAl ejecutar, cuando llega a esa líneaAl compilar, antes de ejecutar nada
Nombre del archivoEl que quierasEl 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

PiezaPara quéCómo comprobarla
JDK 21 (Oracle o Temurin)javac compila, java ejecuta en la JVMjava --version y javac --version
PATH con …\jdk-21\binQue la terminal encuentre java y javacwhere.exe java
JAVA_HOMEQue otras herramientas encuentren el JDKecho $env:JAVA_HOME en PowerShell
VS Code + Extension Pack for JavaEscribir, ejecutar y depurarBotón Run encima de main
Documentos\FP2\java\Tener los temas ordenadosAbierta con Abrir carpeta

Tres ideas para llevarte:

  1. Para programar en Java necesitas el JDK, no «Java» a secas: javac compila y java ejecuta.
  2. Si Windows no encuentra java, el problema casi siempre es el PATH: tiene que incluir la carpeta bin del JDK. where.exe java te dice cuál se está usando.
  3. 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.

Sigue aprendiendoTodos los artículos de Herramientas

¿Te ha servido este artículo? Así puedes apoyar SergioLearns →

Sigue aprendiendo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *