¡Compártelo!

SDKMAN!: ¿qué es, cómo instalarlo y utilizarlo?

En este artículo vamos a hablar un poco sobre qué es SDKMAN!, cómo se instala y qué nos ofrece. Veremos también un ejemplo real de cómo instalar varias versiones de Java utilizando esta herramienta. ¡Sigue leyendo!

¿Qué es SDKMAN!?

SDKMAN! es una herramienta que nos permite manejar la instalación y configuración de diversas versiones de SDKs (Software Developments Kits) mediante línea de comandos. Inicialmente, fue conocido como GVM (Groovy enVironment Manager) y está inspirado en otras herramientas utilizadas por la comunidad Ruby.

En nuestro día a día como desarrolladores, nos encontramos a veces ante aplicaciones que funcionan y deben compilar en versiones muy diferentes su SDK. Por ejemplo, de Java 1.8, 11, posterior, anterior, etc. También nos ocurre lo mismo con Maven y con otros SDKs. Cada vez que queremos cambiar de versión, se hace tedioso el tener que buscar, descargar, instalar y configurar nuestro sistema operativo para que utilice esta versión recientemente instalada. Para ello, tenemos a nuestra disposición aplicaciones como SDKMAN!.

Como curiosidad, os paso el repositorio donde se encuentra el proyecto de SDKMAN!. Como se puede observar, se trata de un conjunto de script shells.

Características de SDKMAN!

  • Centrado en JDKs de la JVM: Java, Groovy, Scala, Kotlin y Ceylon. Ant, Gradle, Grails, Maven, SBT, Spark, Spring Boot, Vert.
  • Ligero al ser por lineal de comandos.
  • Multiplataforma
  • Open Source con licencia Apache 2.0.

Instalación de SDKMAN! en Windows

En su web, nos proporciona una instalación muy sencilla para Linux y Mac, pero en nuestro caso vamos a instalarlo en nuestro Windows 11.

La instalación en Windows nos plantea un problema inicial, y es que se realiza con un script bash. Para la instalación hemos utilizado la consola de GitBash que se nos instaló junto al Git.

curl -s "https://get.sdkman.io" | bash

Warning! Una vez ejecutamos este comando, me dio un error: no encuentra zip, unzip. Para solventarlo, tuve que realizar la siguiente modificación:

curl -s "https://get.sdkman.io" > sdkman

A continuación, editamos este fichero y comentamos el siguiente fragmento de código:

#echo "Looking for unzip..."
#if ! command -v unzip > /dev/null; then
#	echo "Not found."
#	echo "======================================================================================================"
#	echo " Please install unzip on your system using your favourite package manager."
#	echo ""
#	echo " Restart after installing unzip."
#	echo "======================================================================================================"
#	echo ""
#	exit 1
#fi

#echo "Looking for zip..."
#if ! command -v zip > /dev/null; then
#	echo "Not found."
#	echo "======================================================================================================"
#	echo " Please install zip on your system using your favourite package manager."
#	echo ""
#	echo " Restart after installing zip."
#	echo "======================================================================================================"
#	echo ""
#	exit 1
#fi

Una vez comentado este fragmento de código, podemos instalarlo mediante el comando:

bash sdkman

Ejemplo de cómo usar SDKMAN!

Una vez tengamos instalado el SDKMAN! mediante nuestra terminal podemos realizar la instalación de distintas versiones de SDKs en nuestro sistema. A continuación, ilustraremos ejemplos de cómo instalar varias versiones de Java.

sdk list java

Mediante este comando, podemos visualizar un listado de todas las versiones de la JDK de Java que tenemos instaladas, la que tenemos configurada por defecto, las que podemos instalar, etc. Tal y como se muestra en la siguiente imagen:

Vista con SDKMAN! del listado de las versiones de JDK de java que tenemos instaladas.
Vista con SDKMAN! del listado de las versiones de JDK de java que tenemos instaladas.

Para instalar/desinstalar/cambiar uso o cambiar el que usaremos por defecto, utilizaremos el identificador de la columna Identifier. Observamos que actualmente tenemos instalada por defecto la 11.0.12 open de Java.net. Si quisiéramos cambiar a la 8.322.06.1 de Amazon, tendríamos que realizar el siguiente comando:

$ sdk use java  8.322.06.1-amzn

Using java version 8.322.06.1-amzn in this shell.

Tenemos la opción de utilizar para esta consola, por defecto o de manera predeterminada.

Como hemos indicado, todo esto se puede hacer para Java, Kotlin, Groovy, Maven, Scala y un largo etcétera de SDKs que nos proporciona esta herramienta. Seguidamente, incluyo enlaces al portal de SDKMAN! en los que podemos ver todas las JDKs y SDKs que nos proporcionan, así como más ejemplos de uso de los comandos:

Configurando nuestro IDE y las variables de entorno

Una vez instalado SDKMAN!. deberemos configurar las variables de entorno de nuestro Windows (si queremos usarlo en consola) o bien la ruta de la SDK de nuestro IDE para que apunte a la carpeta donde se encuentra la versión current seleccionada por SDKMAN!.

~/.sdkman/candidates/java/current

En este caso, para cada SDK que SDKMAN! tenga instalado, tendremos varias carpetas con las versiones y una carpeta llamada current, donde se encuentra la versión que hayamos configurado como current.

Si utilizamos la ruta a esta current para la variable del entorno de Windows o de nuestro IDE, cada vez que cambiemos por consola la versión current tendremos nuestra consola y nuestros IDEs tirando de la versión que hayamos dictaminado por consola en el SDKMAN!. Esta es la gran ventaja que nos proporciona SDKMAN!: mediante un comando podemos ir saltando de una versión a otra de la SDK de una forma simple y rápida.

NVM, alternativa para Node.js

Al igual que SDKMAN!, para desarrollos en Node.js existe NVM (Node Version Manager) que, al igual, nos posibilita hacer switch entre distintas versiones de Node.js.

Conclusión

En este artículo hemos diseccionado SDKMAN!, una poderosa herramienta para instalar y configurar diversas versiones de SDKs mediante línea de comandos. Así, hemos visto en qué consiste, sus características principales, cómo instalarla y un ejemplo de uso de cómo instalar varias versiones de Java con ella.

Descubre mucho más en nuestro canal de YouTube. ¡Suscríbete!

Artículos relacionados

Go

¿Qué es Go y qué usos tiene?

Seguro que has oído hablar de Go o también conocido como Golang. A pesar de ser un lenguaje de programación relativamente actual, ha llegado pisando fuerte y para quedarse. Conoce a continuación todo lo que necesitas saber sobre Go, considerado por muchos como el lenguaje

Jdk 17: última versión LTS en Java

El 14 de septiembre de 2021 fue publicada una nueva versión de Java: Jdk 17. Desde que Oracle decidió crear nuevas versiones del lenguaje aumentando la frecuencia de entrega cada seis meses, los nuevos lanzamientos van añadiendo nuevas funcionalidades al lenguaje que son probadas, pudiendo

Apache Kafka

Qué es Apache Kafka y cómo dar los primeros pasos

En este artículo vamos a ver qué es Apache Kafka y cuáles son los primeros pasos para empezar a utilizar esta tecnología clave para realizar procesamiento de datos en tiempo real. ¿Qué es Apache Kafka? Apache Kafka es un sistema de mensajería distribuido y escalable