Java en macOS, la versión de esta guía para Mac. Vas a aprender exactamente cómo instalarlo con SDKMAN!, elegir la versión correcta para tu trabajo, y dejar Maven y Gradle solo si de verdad los necesitas.
Hay un dato curioso en este post: a diferencia del resto de la etapa de lenguajes, aquí no usamos Homebrew. SDKMAN! trae su propio instalador y funciona idéntico en macOS y en Linux; si seguiste la versión de Ubuntu del sábado, esta te va a resultar familiar hasta el déjà vu. Esa portabilidad es justo su gracia.
El problema que resuelve es el mismo: Java tiene demasiadas formas de instalarse en Mac (DMG del fabricante, brew, descargas manuales) y cada una deja el JDK en un lugar distinto. Cuando una herramienta no encuentra el Java que espera, empieza la arqueología.
Vamos a ver:
- Verificar las herramientas base de macOS.
- Instalar SDKMAN! y dejarlo cargado en zsh.
- Elegir e instalar la versión correcta de Java (las LTS).
- Maven y Gradle: cuándo sí y cuándo no.
Al final tendrás Java bajo control, con la versión que cada herramienta necesita.
Tabla de contenidos
Tabla de contenidos
Paso 1: Verifica las herramientas base
macOS ya trae lo que SDKMAN! necesita. Confírmalo:
curl --version
zip -v
unzip -v
Si algo falta, llega con las Command Line Tools (que ya tienes si seguiste el setup de la serie):
xcode-select --install
Paso 2: Instala SDKMAN!
Un solo comando:
curl -s "https://get.sdkman.io" | bash
Cárgalo en la sesión actual y verifica:
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk version
El instalador deja su inicialización en tu ~/.zshrc automáticamente. Confírmalo:
grep sdkman ~/.zshrc
Deberías ver la línea que carga sdkman-init.sh. Si no está, agrégala tú (el bloque exacto está en la solución de problemas de abajo).
Paso 3: Instala Java (la LTS correcta)
Consulta el catálogo:
sdk list java
Mi recomendación: Temurin (la distribución open source de Adoptium) y siempre una LTS:
sdk install java 21.0.7-tem
Java publica una LTS (soporte de largo plazo) cada dos años: 17, 21, 25… Para trabajar, usa siempre una LTS: son las que reciben mantenimiento por años y contra las que valida el tooling. Si un proyecto te exige otra versión, la instalas al lado sin conflicto. La versión exacta (21.0.x-tem) puede variar: usa la que muestre sdk list java.
Fíjala como predeterminada y verifica:
sdk default java 21.0.7-tem
java -version
javac -version
sdk current java
¿Necesitas otra versión temporalmente? sdk use java 17.0.16-tem la activa solo en esa sesión. Y para fijar una versión por proyecto, sdk env init crea un .sdkmanrc, el equivalente al .node-version o .ruby-version de la serie.
Paso 4: Maven y Gradle (opcionales)
Los dos grandes constructores del ecosistema Java, e instalarlos es un comando cada uno:
sdk install maven
sdk install gradle
mvn -version
gradle -version
Revisa el estado completo cuando quieras:
sdk current
which java
Regla para no mezclar entornos: si un proyecto trae su propio wrapper (./mvnw o ./gradlew), úsalo siempre; garantiza la versión exacta que el proyecto espera. El Maven o Gradle global es para tu terminal y tus experimentos.
Solución de problemas comunes
sdk: command not found
El shell no cargó la inicialización. Agrega esto al final de tu ~/.zshrc y reinicia la terminal:
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ]] && source "$SDKMAN_DIR/bin/sdkman-init.sh"
java -version muestra otra versión
Otra instalación de Java se está interponiendo. Diagnostica con:
which java
sdk current java
Si la ruta no sale de ~/.sdkman, revisa que la inicialización de SDKMAN! esté al final de tu ~/.zshrc, después de cualquier otra configuración de Java.
Mantenimiento
Actualizar SDKMAN! y sus herramientas:
sdk selfupdate
sdk upgrade
Y para eliminar una versión que ya no uses:
sdk uninstall java 17.0.16-tem
Conclusión
Java bajo control en tu Mac, con la LTS correcta, cambio de versión en un comando y sin misterios sobre qué JDK responde. Con esto cierras los cuatro lenguajes gestionados de la serie.
Si esto te fue útil, el artículo relacionado es el paso lógico: Cómo instalar y configurar Java en Ubuntu con SDKMAN, la versión de esta guía para Ubuntu y WSL.
La próxima semana cierro la etapa de lenguajes con la base de datos: PostgreSQL, en Ubuntu/WSL y en macOS. Si no te lo quieres perder, suscríbete al newsletter en la portada del blog.