Cómo comprobar la versión de Java (Windows, macOS, Linux): java -version y javac -version

目次

1. Lo que aprenderás en este artículo (Lo esencial al frente)

En esta página, organizaremos la forma más rápida de lograr tu objetivo de “verificar la versión de Java desde la línea de comandos.”
Para compartir la conclusión primero, los comandos que usualmente usarás son estos dos:

  • La versión de Java que realmente se ejecutajava -version
  • La versión del JDK (compilador) para desarrollojavac -version

Sin embargo, en entornos del mundo real, es muy común encontrar que “la versión que esperabas no es la que aparece.”
Este artículo no solo lista comandos—también explica por qué ocurre la discrepancia y cómo arreglarla.

1.1 Lo que podrás hacer después de leer

Al final, podrás hacer lo siguiente:

  • Verificar tu versión de Java inmediatamente wp:list /wp:list

    • Usar con confianza java -version y javac -version para el propósito correcto
    • Entender cómo verificar en Windows / macOS / Linux wp:list /wp:list

    • Verificar Java considerando las diferencias comunes específicas del SO

    • Identificar qué Java se está usando incluso cuando hay múltiples versiones instaladas wp:list /wp:list

    • Solucionar problemas de “Lo instalé, pero aún aparece una versión anterior” por tu cuenta

    • Entender las causas típicas y soluciones cuando la versión mostrada no es la esperada wp:list /wp:list

    • Aprender los básicos de PATH, JAVA_HOME, y configuraciones de cambio de versión

1.2 Audiencia objetivo (Principiantes bienvenidos)

  • Necesitas usar Java y quieres saber qué Java está instalado en tu PC primero
  • Te han dicho “Se requiere Java 17” o “Solo Java 8,” y necesitas verificar tu versión actual
  • Ejecutaste un comando y obtuviste una versión diferente a la esperada, y estás atascado
  • java funciona pero javac no, y no entiendes completamente las diferencias JRE/JDK

1.3 Un punto clave que debes saber desde el principio (Muy importante)

La mayor parte de la confusión sobre verificar la versión de Java se reduce a este punto:

  • “Java instalado en la máquina” no es lo mismo que “Java que realmente se ejecuta.”

Cuando hay múltiples instalaciones de Java, el Java que se ejecuta es el encontrado en la ubicación de mayor prioridad en tiempo de ejecución.
Por eso, el resultado de java -version puede no ser “la versión más reciente que acabas de instalar.”

Teniendo en cuenta esa discrepancia, este artículo explica, en orden:

  • Qué ejecutar primero (el camino más corto)
  • Qué verificar después para identificar la causa (pasos de investigación)
  • Cómo arreglarlo (pasos de resolución)

paso a paso.

2. Comienza aquí: Lista de comandos para verificar la versión de Java (Copia y pega)

No necesitas muchos comandos para verificar tu versión de Java.
Si solo recuerdas esta sección, resolverás aproximadamente el 90% de los casos.

2.1 Verificar la versión de Java usada en tiempo de ejecución

java -version

Este comando muestra la versión de Java que realmente se ejecuta en esta PC en este momento.
Es la forma más básica—y más importante—de confirmar tu entorno de Java.

Qué incluye típicamente la salida (Ejemplo)

  • El número de versión de Java (p. ej., 17 / 21 / 1.8, etc.)
  • La implementación (OpenJDK / Oracle JDK, etc.)
  • Detalles del entorno de ejecución como 64-bit / Server VM

El punto clave es este: apunta al java que tiene la mayor prioridad en tu PATH.
No se trata de “dónde instalaste Java,” sino de “qué Java se está invocando.”
Tenlo en cuenta.

2.2 Verificar la versión del entorno de desarrollo de Java (JDK)

javac -version

Este comando muestra la versión del compilador de Java (javac).

Qué te dice esto

  • Si el JDK está instalado correctamente
  • Si puedes usar Java no solo para ejecutar apps, sino también para desarrollo/compilaciones

Si este comando muestra algo como:

  • “command not found”
  • javac no se reconoce como un comando interno o externo”

entonces es muy probable que el JDK no esté instalado o que tu PATH no esté configurado correctamente.

2.3 La diferencia entre java -version y javac -version (Confusión común entre principiantes)

CommandWhat It ChecksMain Use
java -versionJava at runtimeRunning apps / verifying runtime behavior
javac -versionCompiler (JDK)Development / builds

Un malentendido frecuente es:

  • Si java -version funciona, puedes desarrollar código Java. Esto no es correcto.
  • Ejecutar únicamente → java
  • Desarrollar (compilar) → javac

Estos dos tienen roles diferentes, por lo que comprobar ambos es el enfoque estándar.

2.4 Verificar usando una herramienta del JDK (Opcional)

Dependiendo de tu entorno, también puedes comprobar la versión del JDK con el siguiente comando:

jshell --version
  • jshell es una herramienta incluida por defecto en JDK 9 y posteriores
  • Si esto funciona, es una buena señal de que el JDK está instalado

Dicho esto, mientras comprendas java -version y javac -version, normalmente es suficiente.

2.5 Orden recomendado para comprobar (Amigable para principiantes)

Si eres nuevo en esto, comprobar en el siguiente orden reduce la confusión:

  1. java -version → Verifica la versión de Java usada en tiempo de ejecución
  2. javac -version → Confirma que el JDK de desarrollo está disponible
  3. Si los resultados no son los esperados, consulta la siguiente sección para verificaciones específicas del SO

3. Cómo leer java -version (Ejemplo de salida y cómo interpretarla)

En esta sección desglosaremos lo que aparece al ejecutar java -version, paso a paso para que los principiantes no se pierdan.
Esto evita la situación frecuente de “no sé qué debo observar”.

3.1 El rol básico de java -version

java -version

Lo que este comando indica es la versión de Java que se ejecutará ahora mismo.
No muestra una lista de versiones de Java instaladas; muestra la que realmente se está usando.

Por eso este resultado se convierte en la referencia para cosas como:

  • Si cumples con la versión de Java requerida por una aplicación o herramienta
  • Si los entornos de producción/pruebas están ejecutando la versión de Java prevista
  • Si una versión antigua de Java se está usando inesperadamente

3.2 Ejemplo típico de salida (Ilustración)

La redacción exacta varía según el entorno, pero generalmente verás algo como esto:

java version "17.0.8"
Java(TM) SE Runtime Environment (build 17.0.8+9)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9, mixed mode)

Dentro de esta salida, la parte más importante es la primera línea.

3.3 Qué comprobar primero (Esto es todo lo que necesitas)

① Número de versión

java version "17.0.8"
  • 17 → serie Java 17
  • 1.8.x → Java 8
  • 21.x → Java 21

En muchas empresas, las versiones LTS (Soporte a Largo Plazo) como 8 / 11 / 17 / 21 son las más usadas.
Primero, confirma si es la versión principal que tu proyecto requiere.

② Distribución de Java (Oracle / OpenJDK, etc.)

Java(TM) SE Runtime Environment

o

OpenJDK Runtime Environment

En la mayoría de los casos no es necesario ser demasiado estricto con esto para una verificación básica.
Sin embargo, algunas compañías o proyectos pueden requerir explícitamente “Oracle JDK” o “OpenJDK”, por lo que puede importar según tu entorno.

③ “64‑bit” / “Server VM”

64-Bit Server VM
  • En la mayoría de los entornos modernos, 64‑bit es lo normal
  • A menos que tengas una razón especial, una verificación rápida aquí es suficiente

3.4 Por qué obtienes “una versión de Java diferente a la esperada”

Este es el punto que más confunde a los principiantes.

Un malentendido común

  • “Instalé la última versión de Java.”
  • “Así que java -version debería mostrar la última versión.”

En realidad, eso no está garantizado.

La razón es simple:

  • java -version ejecuta el primer java que encuentra con mayor prioridad en el PATH

Por eso.

En otras palabras, si:

  • Una versión antigua de Java queda antes en el PATH
  • Hay varias instalaciones de JDK/JRE mezcladas

entonces puede ejecutarse una versión de Java distinta a la que instalaste.

3.5 java -version verifica el “resultado”, no la “ubicación”

Como forma importante de pensar:

  • ❌ Dónde está instalado Java
  • ⭕ Qué Java se está ejecutando realmente

Eso es para lo que sirve java -version.

Primero, simplemente decide si el resultado mostrado es correcto.
Si no lo es, usa las siguientes secciones para identificar la causa y corregirlo—ese es el flujo de trabajo más seguro.

4. Cómo leer javac -version (Confirmar si el JDK está instalado)

Aquí explicaremos el papel de javac -version y cómo interpretarlo.
Entender este comando rápidamente resuelve un problema frecuente: “Java se ejecuta, pero no puedo desarrollar/compilar.”

4.1 ¿Qué es javac? (Amigable para principiantes)

javac es la abreviatura de Java Compiler (Compilador de Java).

  • javaejecuta un programa ya compilado
  • javaccompila código fuente (.java)

Así que los roles son:

  • Si solo quieres ejecutar Java → basta java
  • Si quieres desarrollar/compilar Java → necesitas javac

Esa es la división básica de responsabilidades.

4.2 Qué aprendes con javac -version

javac -version

Este comando muestra la versión del compilador de Java que se está usando actualmente.

Salida de ejemplo (Ilustración)

javac 17.0.8

El número que aparece aquí puede interpretarse como:

  • La versión del JDK en sí
  • La versión base de Java utilizada para la compilación en la práctica

Ese entendimiento es suficiente en la mayoría de los casos del mundo real.

4.3 Notas importantes cuando no coincide con java -version

Este tipo de desajuste ocurre con frecuencia en el trabajo real:

  • java -version → 17
  • javac -version → 11

En ese caso, tienes una configuración incongruente:

  • Tiempo de ejecución: Java 17
  • Desarrollo: Java 11

Problemas que este desajuste puede causar

  • No puedes usar características de lenguaje más recientes
  • La compilación tiene éxito, pero aparecen errores en tiempo de ejecución
  • El comportamiento difiere entre CI y entornos locales

Por lo tanto, como política básica, es más seguro alinear ambas versiones.

4.4 Cuando javac no se encuentra (Errores comunes)

Puedes ver mensajes como los siguientes:

  • javac no se reconoce como un comando interno o externo”
  • “command not found: javac”

En este caso, las causas probables casi siempre son una de estas dos:

Causa 1: El JDK no está instalado

  • Solo está instalado el JRE (tiempo de ejecución)
  • No se incluyen las herramientas de desarrollo

Causa 2: PATH no está configurado

  • El JDK está instalado, pero el directorio bin no está incluido en PATH

Puedes distinguir de forma fiable entre estas situaciones en las secciones de confirmación específicas del SO.

4.5 javac -version es una señal de “¿Puedo desarrollar?”

Si eres principiante, recordarlo de esta forma evitará confusiones:

  • java -version¿Puedo ejecutar Java?
  • javac -version¿Puedo desarrollar/compilar Java?

Si ambos comandos muestran las versiones esperadas,
tu entorno Java está en un estado donde la configuración mínima necesaria está completa.

5. Cómo comprobar la versión de Java en Windows

Esta sección explica cómo comprobar la versión de Java en Windows, incluyendo puntos que suelen causar problemas en el uso real.
Dado que Windows es un SO donde a menudo coexisten varias instalaciones de Java, el orden de las comprobaciones es especialmente importante.

5.1 Comprobar usando el Símbolo del sistema / PowerShell (Básico)

Primero, comienza con el método más básico.

  1. Abre Command Prompt o PowerShell
  2. Ejecuta el siguiente comando
    java -version
    

Si planeas desarrollar con Java, también verifica esto:

javac -version

En este punto:

  • Si ambas versiones son las esperadas → Sin problema
  • Si la versión no es la que esperabas → Identifica la causa en los pasos siguientes

Así es como deberías juzgar el resultado.

5.2 Un comando clave específico de Windows: where java

En Windows, es extremadamente importante identificar qué java.exe se está usando realmente.

where java

Salida de ejemplo (Ilustración)

C:\Program Files\Java\jdk-17\bin\java.exe
C:\Program Files\Common Files\Oracle\Java\javapath\java.exe

Si se muestran varias líneas, la que aparece en la parte superior tiene la mayor prioridad y es la que realmente se ejecuta.

5.3 Por qué se sigue usando una versión antigua de Java incluso después de la instalación

Causas comunes en Windows incluyen:

  • Sigue presente una instalación anterior de Java
  • javapath aparece antes en la variable PATH
  • JAVA_HOME y PATH no coinciden

En particular, si el siguiente directorio está incluido en PATH:

C:\Program Files\Common Files\Oracle\Java\javapath

a menudo provoca que se invoque una versión de Java no deseada.

5.4 Cómo comprobar JAVA_HOME (Windows)

A continuación, verifica JAVA_HOME.

echo %JAVA_HOME%
  • Si no se muestra nada → JAVA_HOME no está configurado
  • Si se muestra una ruta inesperada → Puede estar apuntando a una versión antigua de Java

Ejemplo de una configuración correcta

C:\Program Files\Java\jdk-17

Ten en cuenta que debe apuntar al directorio raíz del JDK, no al directorio bin.

5.5 Lista de verificación segura para Windows

Para principiantes, comprobar en este orden ayuda a evitar confusiones:

  1. java -version
  2. javac -version
  3. where java
  4. echo %JAVA_HOME%

Si las cuatro comprobaciones son correctas,
puedes concluir que tu entorno Java en Windows está configurado adecuadamente.

5.6 La verificación mediante la GUI (pantalla de Variables de entorno) puede esperar

Windows también ofrece una pantalla GUI para ver y editar variables de entorno, pero:

  • Qué Java se está usando
  • Por qué hay una discrepancia

se juzgan con mucha mayor precisión usando la salida de los comandos.

Utiliza la GUI cuando necesites corregir la configuración,
pero siempre verifica con los comandos; ese es el enfoque práctico.

6. Cómo comprobar la versión de Java en macOS

Esta sección explica cómo comprobar la versión de Java en macOS.
A diferencia de Windows, macOS tiene un mecanismo a nivel de sistema para gestionar JDKs, por lo que conocer los comandos dedicados ayuda a evitar confusiones.

6.1 Comprobar los comandos básicos en Terminal

Primero, comienza con los mismos comandos básicos que se usan en cualquier lugar.

  1. Abre Terminal
  2. Ejecuta el siguiente comando
    java -version
    

Si planeas desarrollar con Java, también verifica:

javac -version

Si estos dos resultados son los esperados,
el entorno Java realmente usado en macOS está bien.

6.2 Nota: macOS gestiona automáticamente JAVA_HOME

En macOS, es habitual no codificar JAVA_HOME de forma estática,
sino obtenerlo dinámicamente mediante un comando del sistema.

El comando representativo es:

/usr/libexec/java_home

Ejemplo de salida (ilustración)

/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

Esta ruta es el directorio home del JDK predeterminado actual.

6.3 Listar los JDK instalados

Si tienes varios JDK instalados, el siguiente comando es extremadamente útil:

/usr/libexec/java_home -V

Al ejecutar este comando se muestra:

  • Versiones de JDK instaladas
  • Proveedores (Oracle / basados en OpenJDK, etc.)
  • Arquitecturas soportadas

En macOS, esta es la forma más segura de confirmar primero qué JDKs están realmente instalados.

6.4 Cuando java -version y java_home no coinciden

Puedes encontrarte con una situación como esta:

  • /usr/libexec/java_home → Java 17
  • java -version → Java 11

En esos casos, las causas probables son:

  • JAVA_HOME está fijado en archivos de configuración del shell ( .zshrc / .bashrc )
  • Un Java diferente aparece antes en PATH
  • Un Java instalado con Homebrew está tomando prioridad

En macOS, los ajustes a nivel de usuario tienen precedencia,
por lo que los archivos de configuración del shell influyen fuertemente.

6.5 Lista de verificación segura para macOS

En macOS, comprobar en este orden mantiene todo organizado:

  1. java -version
  2. javac -version
  3. /usr/libexec/java_home
  4. /usr/libexec/java_home -V

Con estas cuatro comprobaciones, puedes entender con precisión:

  • El Java que se está usando actualmente
  • La lista de versiones de Java instaladas
  • El JDK predeterminado

sin ambigüedades.

6.6 Piensa en términos de “cambio” en macOS

En macOS, es habitual que:

  • Diferentes proyectos requieran distintas versiones de Java
  • Cambies entre varios JDKs

Por lo tanto:

  • No asumas que solo hay una versión de Java
  • Siempre confirma qué versión de Java está en uso actualmente

Mantener esta mentalidad facilita mucho evitar problemas.

7. Cómo comprobar la versión de Java en Linux

Esta sección explica cómo comprobar la versión de Java en entornos Linux, especialmente para uso en servidores.
Aunque los métodos de gestión varían según la distribución, los conceptos básicos son los mismos.

7.1 Comienza con los comandos básicos

En Linux también, empieza con los comandos habituales:

java -version

Si se requieren desarrollos o compilaciones, también verifica:

javac -version

Con estos dos comandos puedes determinar si:

  • El Java usado en tiempo de ejecución
  • El JDK usado para la compilación

coinciden con tus expectativas.

7.2 Usa which java para encontrar el binario real

En Linux es importante saber qué ejecutable se está invocando realmente.

which java

Salida de ejemplo

/usr/bin/java

Esta ruta es el binario real de Java que utiliza java -version.

Si necesitas más detalle, ejecuta:

ls -l $(which java)

Esto te permite rastrear el enlace simbólico hasta su objetivo real.

7.3 Gestionar múltiples versiones de Java en Debian / Ubuntu (update-alternatives)

En los servidores es muy frecuente tener varias versiones de Java instaladas.
En sistemas basados en Debian/Ubuntu, estas suelen gestionarse con update-alternatives.

Listar alternativas de Java

update-alternatives --list java

Ver la selección actual

update-alternatives --display java

La ruta mostrada aquí es el Java seleccionado a nivel del sistema.

7.4 Cuando java -version y las alternativas no coinciden

A veces puedes observar una discrepancia como:

  • update-alternatives → Java 17
  • java -version → Java 11

Posibles causas incluyen:

  • Un Java diferente aparece en el PATH del usuario
  • Existe un Java instalado manualmente en /usr/local/bin, etc.
  • El PATH difiere entre la ejecución normal y sudo

En Linux, tanto:

  • Configuraciones a nivel de sistema
  • Entorno a nivel de usuario

pueden influir en qué Java se ejecuta.

7.5 Lista de verificación segura para Linux

En Linux, comprobar en este orden mantiene todo claro:

  1. java -version
  2. javac -version
  3. which java
  4. update-alternatives --display java (si corresponde)

Esto te brinda una visión completa de:

  • El Java que está ejecutándose actualmente
  • El archivo ejecutable real
  • La configuración del sistema

de un vistazo.

8. Por qué la versión de Java mostrada difiere (causas y soluciones)

La mayoría de los problemas de versión de Java no se deben a los comandos en sí, sino a la configuración del entorno.
A continuación resumimos causas que se aplican a todos los sistemas operativos.

8.1 Causa 1: La prioridad del PATH no es la esperada

Esta es la causa más frecuente.

  • Un directorio bin de Java antiguo aparece antes en el PATH
  • Instalaste un Java nuevo pero no actualizaste el PATH

Cómo solucionarlo

  • Identifica qué Java se está ejecutando realmente
  • Elimina entradas innecesarias del PATH o corrige su orden

Simplemente “añadir” una nueva ruta a menudo no es suficiente.

8.2 Causa 2: JAVA_HOME no coincide con el Java en ejecución

  • JAVA_HOME → Java 11
  • Java en ejecución → Java 17

Esta situación también es muy común.

Cómo solucionarlo

  • Establece JAVA_HOME al directorio raíz del JDK
  • Asegúrate de que el PATH use $JAVA_HOME/bin

Piensa en JAVA_HOME como una “referencia”, y en PATH como la “prioridad de ejecución”.

8.3 Causa 3: java y javac usan versiones diferentes

Este es un caso clásico de mezcla de versiones de JRE y JDK.

  • El tiempo de ejecución funciona
  • El desarrollo o las compilaciones fallan

Cómo solucionarlo

  • Elige un JDK como estándar
  • Alinea java y javac bajo el mismo JDK

8.4 Causa 4: El IDE o las herramientas de compilación usan un JDK diferente

  • Todo parece correcto en la terminal
  • Aparecen errores en el IDE o en CI

En estos casos, la causa suele ser la configuración del JDK específica del IDE.

Cómo solucionarlo

  • Verifique explícitamente el JDK usado en la configuración del IDE
  • No confíe únicamente en la “detección automática”

9. Una lista de verificación para ir más allá de simplemente “comprobar”

Finalmente, organicemos lo que debe hacer después de comprobar su versión de Java.

9.1 Si su objetivo es solo ejecutar Java

  • ¿java -version cumple con los requisitos?
  • ¿La aplicación se inicia correctamente?

9.2 Si su objetivo es desarrollo o compilaciones

  • ¿javac -version cumple con los requisitos?
  • ¿java y javac muestran la misma versión?
  • ¿JAVA_HOME y PATH están alineados?

9.3 Si usa múltiples versiones de Java

  • Confirme siempre qué Java está en uso actualmente
  • Comprenda la gestión específica del SO (macOS / Linux)

10. Preguntas frecuentes (FAQ)

10.1 ¿Cuál es la diferencia entre java -version y javac -version?

java -version verifica la versión del tiempo de ejecución de Java,
mientras que javac -version verifica la versión del compilador de desarrollo (JDK).
Dado que cumplen propósitos diferentes, comprobar ambos es la práctica estándar.

10.2 ¿Por qué no se encuentra javac?

  • El JDK no está instalado
  • PATH no está configurado correctamente

En la mayoría de los casos, se trata de una de estas dos razones.

10.3 Instalé Java, pero sigue apareciendo una versión antigua

Esto suele significar que otro Java tiene mayor prioridad en PATH.
Verifique el binario real con where java (Windows) o which java (macOS/Linux).

10.4 ¿Puedo usar varias versiones de Java de forma segura?

Sí, puede.
Sin embargo, es fundamental saber siempre qué Java está en uso actualmente.

10.5 ¿Qué versión de Java debo usar?

Si no hay un requisito especial, elegir una versión LTS (Long‑Term Support) es la opción más segura.
Si su proyecto especifica una versión, siempre priorice ese requisito.