¿Qué es sdkman? Guía de instalación y uso

sdkman es un sistema alternativo para instalar el JDK y otras herramientas que conforman el ecosistema Java (como las herramientas de compilación Maven y Gradle, herramientas para lenguajes alternativos como SBT o leiningen, o herramientas CLI específicas como Spring Boot, Helidon, Micronaut o Quarkus) en un ordenador que use una terminal Bash, como la que trae GNU/Linux, macOS, FreeBSD o Windows si se usa WSL, MSYS o Git para Windows. En este vídeo te traigo una explicación sobre:

SDKman es una herramienta que nos facilita enormemente la instalación y gestión de múltiples versiones de Java y otras herramientas relacionadas dentro de sistemas operativos basados en Unix, como macOS, Linux o BSD, e incluso en Windows si usamos entornos compatibles con shell, como el subsistema Linux para Windows o MSYS.

La idea principal de SDKman es evitar la instalación global tradicional de Java o herramientas como Gradle, Maven o SBT. En lugar de eso, SDKman descarga y mantiene estas herramientas en un directorio oculto dentro de nuestro usuario, típicamente .sdkman, gestionando múltiples versiones en paralelo. Esto es especialmente útil cuando trabajamos con proyectos que requieren versiones específicas de estas herramientas, por ejemplo, un proyecto antiguo que necesita una versión concreta de Gradle.

Si venimos de otros lenguajes, SDKman funciona de manera similar a herramientas como NVM para JavaScript, pero adaptado al ecosistema Java. Con un simple comando de instalación, tendremos SDKman listo para descargar y gestionar máquinas virtuales de Java, compiladores y herramientas de construcción.

Entre las opciones que SDKman nos ofrece, podemos instalar diferentes distribuciones de JDK, como OpenJDK de jdk.java.net, Temurin, Azul, Microsoft o incluso el SDK oficial de Oracle. Además, podemos instalar herramientas como Gradle, Maven, SBT para Scala, Kotlin, Leiningen para Clojure, y clis auxiliares para frameworks modernos como Quarkus, Micronaut o Spring Boot.

Para usar SDKman, necesitamos un sistema compatible con shell. En Windows, esto puede lograrse mediante el subsistema Linux para Windows o entornos como Git Bash. La instalación es sencilla: copiamos y pegamos el script de instalación en la terminal, lo que crea el directorio .sdkman en nuestro usuario y modifica los archivos de configuración de la shell para cargar SDKman automáticamente.

Si preferimos no modificar automáticamente nuestros archivos de configuración, podemos instalar SDKman con la variable rcupdate en false y configurar manualmente la carga del entorno.

Una vez instalado, tras reiniciar la terminal o hacer un source del script, tendremos disponible el comando sdk. Con sdk list podemos ver todas las herramientas y versiones disponibles para instalar. Por ejemplo, para instalar Java, primero listamos las versiones con sdk list java, elegimos la versión deseada, por ejemplo 17.0.7-tem para Temurin 17, y la instalamos con:

sdk install java 17.0.7-tem

La primera versión que instalemos se establecerá como la versión por defecto. Si instalamos una segunda versión, como Java 20 de Temurin, el instalador nos preguntará si queremos cambiar la versión por defecto. Podemos elegir mantener la versión anterior y cambiar temporalmente a la nueva con:

sdk use java 20-tem

Este cambio solo afecta a la sesión actual de la terminal. Para hacer el cambio permanente, usamos:

sdk default java 20-tem

Lo mismo aplica para otras herramientas. Por ejemplo, para instalar la línea de comandos de Spring Boot, podemos hacer:

sdk install springboot

Esto instalará la versión más reciente. Si queremos usar una versión específica, primero listamos las versiones con sdk list springboot y luego usamos sdk use o sdk default para cambiar la versión activa.

Una funcionalidad muy útil es el comando sdk env, que nos permite definir en un archivo las versiones específicas de todas las herramientas que queremos usar en un proyecto. Así, con un solo comando podemos cargar ese entorno y asegurarnos de que todas las herramientas estén en la versión correcta.

También podemos obtener la ruta de instalación de una herramienta con sdk home, por ejemplo:

sdk home java 20-tem

Esto es especialmente útil para configurar variables de entorno como JAVA_HOME en IDEs que no detectan automáticamente las instalaciones gestionadas por SDKman.

Aunque SDKman no es la única herramienta para gestionar versiones en el ecosistema Java, es una opción muy práctica y flexible que nos permite mantener nuestro entorno de desarrollo ordenado y adaptado a las necesidades de cada proyecto. Para sacarle el máximo provecho, es recomendable tener un conocimiento básico del uso de la terminal y la gestión de entornos en sistemas Unix.

Con SDKman, podemos olvidarnos de complicaciones al instalar y cambiar entre versiones de Java y herramientas relacionadas, y centrarnos en lo que realmente importa: desarrollar nuestros proyectos con la configuración adecuada.

Lista de reproducción
  1. 1
    JDK vs JRE: ¿qué diferencia hay?
    6 minutos
  2. 2
    ¿Por qué ahora Java versiona tan rápido?
    7 minutos
  3. 3
    Instalar Java en Windows mediante Temurin
    7 minutos
  4. 4
    ¿Por qué hay tantos JDKs y cuál debo elegir? OpenJDK, OracleJDK, Temurin…
    10 minutos
  5. 5
    Cómo instalar y desinstalar el JDK de Java en macOS
    9 minutos
  6. 6
    ¿Qué es Lombok?
    9 minutos
  7. 7
    ¿Qué es sdkman? Guía de instalación y uso
    12 minutos
  8. 8
    Mejores datos de prueba en Java con DataFaker
    9 minutos
  9. 9
    Cómo programo Java sin IDE (y cómo puedes hacerlo tú)
    16 minutos