La importancia de tener las herramientas ordenadas
Es muy importante tener en nuestro sistema las herramientas adecuadas para trabajar. Tener un toolkit que sea flexible y que permita que podamos elegir aquellas herramientas especificas para el trabajo requerido.
En un ideal taller, ya sea de carpintero, ebanista, pintor, mecánico, etc.; se suelen tener organizada toda la herramienta, para cuando se necesite sea fácilmente accesible. En talleres desordenados, los trabajadores van a invertir tiempo en encontrar la herramienta adecuada.
En el contexto del desarrollo de software, necesitamos también herramientas para trabajar. Dichas herramientas pueden cambiar dependiendo el proyecto. Incluso muchas veces son las mismas, pero de diferente versión. Si tenemos dichas herramientas instaladas en nuestro sistema y cada vez que cambiamos a otro proyecto, procedemos a desinstalar la versión que ya no necesitamos e instalamos la versión que necesitamos. Es un desastre. Deberíamos tener una manera sencilla para poder elegir la herramienta adecuada cuando la necesitemos.
Administradores de versiones
Desde hace mucho tiempo, en otros entornos de desarrollo han propuesto una manera muy sencilla de resolver el problema de tener en el sistema múltiples versiones de alguna herramienta en particular. Estas herramientas son conocidas como Version Managers. Ejemplos de ellas son:
- Ruby Version Manager (RVM)
- Node Version Manager (NVM)
- Maven Version Manager (mvnvm)
- Go Version Manager (GVM)
- Java Environment (jEnv)
- SDK Manager aka SDKMAN (antes GVMTool)
- .NET SDK Manager (DNVM)
- PHP-Version
- Python version management (pyenv)
Como podrán apreciar, hay para muchos lenguajes y entornos de desarrollo. La característica que poseen cada uno de ellos, es que permiten fácilmente cambiar la versión de la herramienta en una sesión de shell muy fácilmente. Con una simple instrucción en la linea de comandos estas herramientas se encargarán de establecer los paths adecuados para la sesión actual en el shell.
SDKMan
En este caso particular, quisiera hablar sobre SDKMan, que antes era conocido como GVMTool, el cambio de nombre fue oficial el 17 de septiembre de 2015, porque GVMTool era el nombre corto para Groovy enVironment Manager Tool. Pero el autor lo diseño para que fuera agnóstico a Groovy, por ahora soporta:
- Asciidoctorj
- Crash
- Gaiden
- Glide
- Gradle
- Grails
- Griffon
- Groovy
- GroovyServ
- JBake
- JBossForge
- Lazybones
- Spring Boot
- VertX
Muchas de ellas no son parte del ecosistema Groovy, como asciidoctorj, crash, SpringBoot ó jbossforge. Entonces SDK Manager es una herramienta mucho más genérica para administrar versiones.
Si usas alguna de estas herramientas te recomiendo ampliamente que uses SDKMAN.
Demostración
Les dejo aquí un video del uso de SDKMAN, espero les sea utíl.
Saludos