Ha llegado el día en el que debo trabajar con Java. Adiconalmente me he visto en la necesidad de alternar entre distintas versiones, buscando, me he encontrado con esta útil herramienta llamada SDKMAN.
SDKMAN permite administrar múltiples SDKs en sistemas Unix.
En mi caso lo utilizo para poder administrar diferentes SDKs de Java.
📌 Precondiciones
El script de instalación de SDKMAN necesita tener instalado previamente bash
, zip
, unzip
, curl
.
En mi caso, utilizo Ubuntu LTS 22.04 en WSL2, únicamente me vi en la necesidad de instalar zip
, unzip
y curl
.
sudo apt install zip unzip curl
⚙️ Instalación
La instalación es bastante sencilla, ejecuta la siguiente instrucción:
curl -s "https://get.sdkman.io" | bash
Al finalizar la instalción, se solicitará abrir una nueva terminal o ejecutar un comando por medio de source
.
Comprueba la instalación ejecutando
sdk version
El resultado deberá ser similar al siguiente:
SDKMAN!
script: 5.18.2
native: 0.4.6
🛠️ Uso básico de SDKMAN
Listar las diferentes versiones de Java disponibles
sdk list java
Mostrará un listado en columnas, en mi caso necesito utilizar Open JDK 21 por lo que utilizaré la versión 21.0.2
de Java.net
. El identificador que corresponde es 21.0.2-open
.
================================================================================
Available Java Versions for Linux 64bit
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
Corretto | | 21.0.2 | amzn | | 21.0.2-amzn
| | 21.0.1 | amzn | | 21.0.1-amzn
| | 17.0.10 | amzn | | 17.0.10-amzn
| | 17.0.9 | amzn | | 17.0.9-amzn
| | 11.0.22 | amzn | | 11.0.22-amzn
| | 11.0.21 | amzn | | 11.0.21-amzn
| | 8.0.402 | amzn | | 8.0.402-amzn
| | 8.0.392 | amzn | | 8.0.392-amzn
Dragonwell | | 17.0.10 | albba | | 17.0.10-albba
| | 17.0.9 | albba | | 17.0.9-albba
Java.net | | 23.ea.14 | open | | 23.ea.14-open
| | 23.ea.13 | open | | 23.ea.13-open
| | 23.ea.12 | open | | 23.ea.12-open
| | 23.ea.11 | open | | 23.ea.11-open
| | 23.ea.10 | open | | 23.ea.10-open
| | 23.ea.8 | open | | 23.ea.8-open
| | 23.ea.7 | open | | 23.ea.7-open
| | 23.ea.6 | open | | 23.ea.6-open
| | 23.ea.5 | open | | 23.ea.5-open
| | 23.ea.4 | open | | 23.ea.4-open
| | 23.ea.3 | open | | 23.ea.3-open
| | 23.ea.2 | open | | 23.ea.2-open
| | 23.ea.1 | open | | 23.ea.1-open
| | 22 | open | | 22-open
| | 22.ea.36 | open | | 22.ea.36-open
| | 22.ea.35 | open | | 22.ea.35-open
| | 22.ea.34 | open | | 22.ea.34-open
| | 22.ea.33 | open | | 22.ea.33-open
| | 22.ea.32 | open | | 22.ea.32-open
| | 22.ea.31 | open | | 22.ea.31-open
| | 22.ea.30 | open | | 22.ea.30-open
| | 22.ea.29 | open | | 22.ea.29-open
| | 22.ea.28 | open | | 22.ea.28-open
| | 22.ea.27 | open | | 22.ea.27-open
| | 22.ea.26 | open | | 22.ea.26-open
| | 21.ea.35 | open | | 21.ea.35-open
| | 21.0.2 | open | | 21.0.2-open
Puedes salir de la vista de lista con la tecla q
.
Instalar una versión específica de Java
Para instalar una versión específica de Java, envía como parámetro el identificador correspondiente a la versión de Java deseada.
sdk install java 21.0.2-open
SDKMAN procederá a descargar y configurar el SDK como la versión por defecto. Puedes comprobar la instalación de la siguiente manera.
java --version
openjdk 21.0.2 2024-01-16
OpenJDK Runtime Environment (build 21.0.2+13-58)
OpenJDK 64-Bit Server VM (build 21.0.2+13-58, mixed mode, sharing)
En caso necesites descargar otra versión unicamente debes ubicar el identificador, por ejemplo, 17.0.9-oracle
.
sdk install java 17.0.9-oracle
En este caso, al finalizar la instalación SDKMAN te consultará si deseas colocar la versión descargada como la versión por defecto.
Obtener la versión en uso de Java
sdk current java
Using java version 21.0.2-open
Cambiar la versión en uso de Java
Cambio en terminal o sesión actual
sdk use java 17.0.9-oracle
Using java version 17.0.9-oracle in this shell.
Cambio en la versión por defecto
sdk default java 17.0.9-oracle
setting java 17.0.9-oracle as the default version for all shells.
⬆️ Configura una versión de Java por proyecto con SDKMAN
Considero que el mejor uso que puedes darle a SDKMAN es la configuración por proyecto, de esta forma te aseguras que para el uso del proyecto, se use una versión específica de Java. La configuración del ambiente se realiza por medio de los archivos .sdkmanrc
.
Crea un archivo de configuración .sdkmanrc
Para esta configuración ingresaré a la carpeta del proyecto, de lo contrario el archivo .sdkmanrc
será creado en la carpeta donde ejecutes el comando.
sdk env init
.sdkmanrc created.
El archivo se poblará automáticamente con la versión en uso. Edita el archivo con la versión de Java deseada para el proyecto. Debes colocar el identificador de la versiób,
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=21.0.2-open
…
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=17.0.9-oracle
Activa la versión de Java correspondiente al proyecto
Dentro de la carpeta del proyecto, ejecuta el siguiente comando.
sdk env
Using java version 17.0.9-oracle in this shell.
Restaura la versión de Java por defecto
Al terminar de usar la versión de Java del proyecto, puedes restaurar la versión por defecto con el siguiente comando.
sdk env clear
Restored java version to 21.0.2-open (default)
🏁 Conclusiones
SDKMAN es una elegante herramienta de trabajo para instalar diversos tipos de SDK, incluso cambiar entre distintas versiones. En este artículo se presenta el uso de su funcionalidad enfocada en Java.
Considera explorar los SDKs que se encuentran disponibles en esta herramienta 😉.
Foto de Clint McKoy en Unsplash