¡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

Descubriendo las posibilidades de los componentes web con Polymer

Descubriendo las posibilidades de los componentes web con Polymer

En este post, exploraremos qué son los Web Components, tecnologías estándar de la web que facilitan la creación de componentes reutilizables y encapsulados. Analizaremos cómo Polymer simplifica su uso y promueve las mejores prácticas de desarrollo, proporcionando herramientas y características que facilitan la construcción de

No code

Qué es el No Code: Principales herramientas

La capacidad de crear soluciones tecnológicas sin la necesidad de escribir código se ha convertido en una tendencia cada vez más relevante. Esto se debe en gran parte al surgimiento de herramientas No Code, que permiten a personas con diversos niveles de habilidad técnica dar

Object Pooling

Patrones de diseño en los videojuegos: Object Pooling

El uso de patrones de diseño, como el Object Pooling, es una práctica muy recomendable cuando se quieren realizar desarrollos de software escalables, robustos y que tengan un buen rendimiento. Además, nos puede ayudar a mantener una estructuración de todo el código fuente para ayudar