¡Compártelo!
Compartir en facebook
Compartir en twitter
Compartir en linkedin

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

Oh My ZSH

Vitamina tu terminal con Oh My ZSH

Para todos los que nos dedicamos al mundo del desarrollo software, una gran parte del tiempo de nuestro trabajo pasa al lado de nuestra querida terminal. En este post hablaremos de Oh My ZSH, un paquete de utilidades, plugins y plantillas para el shell ZSH que

DevToys

DevToys, o cómo facilitar el día a día de un desarrollador software

Microsoft nos presenta, de la mano de Etienne Baudoux, DevToys, una pequeña suite de utilidades de código abierto enfocada a facilitar el día a día de los desarrolladores de software. Su creador la define como una “navaja suiza para desarrolladores” y, desde hace pocos meses,

Spring Batch

Introducción a Spring Batch: qué es, ventajas y ejemplo real

En este post vamos a hablar sobre Spring Batch, en qué consiste, de qué módulos se compone y qué ventajas tiene a la hora de realizar procesamiento batch. Finalmente se incluye un ejemplo de cómo implementar una solución con Spring Batch. ¿Qué es Spring Batch?