Antes de sumarte a una misión con múltiples microservicios Quarkus es clave contar con un entorno de desarrollo flexible, limpio y fácil de mantener. En esta guía te muestro cómo instalar Java (OpenJDK y GraalVM/Mandrel), Maven y Quarkus CLI usando SDKMAN!, una herramienta que no sólo simplifica la instalación, sino que además te permite cambiar entre distintas versiones de Java configurando JAVA_HOME
automáticamente.
🧰 ¿Qué es SDKMAN!?
Es un gestor de versiones para herramientas del ecosistema Java, como JDKs, Maven, Gradle, y por supuesto, Quarkus CLI.
Y lo mejor de todo es que te permite tener varias versiones instaladas y alternar entre ellas fácilmente evitando todo tipo de conflictos. Esto lo hace ideal para entornos de microservicios con varias versiones Java LTS soportadas por Quarkus: Java 17 (mínima soportada por Quarkus) o Java 21 (recomendada para nuevos despliegues).
Instalando SDKMAN!
En Linux, macOS y WSL (Windows Subsystem for Linux) ejecuta:
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
Luego, en una nueva ventana de terminal, verifica que se instaló correctamente:
sdk version
Instalando Java, Maven y Quarkus CLI con SDKMAN!
Sólo ejecuta los comandos en la nueva terminal:
sdk install maven
sdk install quarkus
sdk install java
Comprueba que todo quedó operativo con esta verificación rápida de versiones:
mvn -v
quarkus --version
java -version
Se han instalado las últimas versiones de Maven y Quarkus CLI. En el caso de Java, se ha instalado la última versión LTS de Eclipse Temurin, la distribución de Java mantenida por el proyecto Eclipse Adoptium (antes AdoptOpenJDK) y opción por defecto en SDKMAN! Es estable, ampliamente usada en producción y una apuesta segura para entornos portables.
Si trabajas con RHBQ(Red Hat build of Quarkus) , Red Hat soporta el uso de cualquier JDK de Adoptium en modo JVM; el soporte se limita a problemas en Quarkus.
El autocompletado de Quarkus CLI permite que la terminal sugiera y complete comandos y opciones a medida que los escribes, facilitando el trabajo y reduciendo errores. Para activarlo de forma permanente, basta con añadir ejecutar la siguiente línea a la configuración de tu shell:
echo "source <(quarkus completion)" >> ~/.bashrc # o ~/.zshrc
Usa ~/.bashrc
si tu shell predeterminada es Bash (la más común en muchas distribuciones Linux y en WSL), o ~/.zshrc
si usas Zsh (predeterminada en macOS recientes y en algunas configuraciones personalizadas de Linux). Si no estás seguro, puedes verificarlo ejecutando echo $SHELL
.
☕ Instalando otras versiones de Java (Temurin, GraalVM, Mandrel)
Comencemos consultando qué versiones de Temurin (tem) están disponibles:
sdk list java | grep tem
Verás algo como:
Temurin | | 24.0.1 | tem | | 24.0.1-tem
|>>>| 21.0.8 | tem | installed | 21.0.8-tem
| | 21.0.7 | tem | | 21.0.7-tem
| | 21.0.6 | tem | | 21.0.6-tem
| | 17.0.16 | tem | | 17.0.16-tem
| | 11.0.27 | tem | | 11.0.27-tem
| | 8.0.452 | tem | | 8.0.452-tem
Esto te permite elegir la versión que quieras instalar con total confianza.
Si quieres instalar Java 17, puedes instalarlo así indicando su identificador:
sdk install java 17.0.16-tem
GraalVM permite compilar aplicaciones Java como ejecutables nativos. Esto acelera drásticamente el tiempo de inicio y reduce el uso de memoria, lo que lo hace ideal para ciertos casos de uso.
Mandrel es una versión especializada de GraalVM, enfocada y optimizada por Red Hat para funcionar específicamente con Quarkus, lo que la hace la opción ideal.
Para conocer los casos de uso de ejecutables nativos, visita el artículo JAR vs ejecutable nativo en Quarkus
Si optas por Mandrel, consulta las versiones disponibles así:
sdk list java | grep r21-mandrel
‼️ El versionado de Mandrel utiliza un esquema propio (como
23.1.8.r21-mandrel
) para su distribución de Native Image, aunque ésta se construye sobre una versión específica y estable de OpenJDK.La versión de Java utilizada como base se indica con el prefijo rXX en el identificador de Mandrel (por ejemplo,
r21-mandrel
), lo que nos permite filtrar las versiones que se basan en OpenJDK 21.
Verás algo como:
| | 23.1.8.r21 | mandrel | | 23.1.8.r21-mandrel
| | 23.1.7.r21 | mandrel | | 23.1.7.r21-mandrel
| | 23.1.6.r21 | mandrel | | 23.1.6.r21-mandrel
⚠️ Mandrel no está disponible en macOS con arquitectura amd64/x86. En ese caso puedes optar por usar Mandrel desde un contenedor o ir directamente por GraalVM (explicado más adelante).
Instala la última versión que veas disponible, en este caso:
sdk install java 23.1.8.r21-mandrel
Por último, debes configurar la variable de entorno GRAALVM_HOME con el directorio de instalación de Mandrel, ya que SDKMAN! no la administra automáticamente como lo hace con JAVA_HOME. Para ver el directorio de instalación de Mandrel ejecuta:
sdk home java 23.1.8.r21-mandrel
Por lo tanto, agregas al final de tu archivo de entorno (~/.bashrc, ~/.zshrc, etc.):
# Configuración para ejecutables nativos con Quarkus
export GRAALVM_HOME=$(sdk home java 23.1.8.r21-mandrel)
Actualiza el shell y verifica que GRAALVM_HOME haya quedado configurada, por ejemplo:
source ~/.zshrc
echo $GRAALVM_HOME
GraalVM Community Edition (Graal CE) es la versión gratuita y de código abierto de GraalVM. Si no pudiste instalar Mandrel por alguna razón o prefieres ir por Graal CE, puedes ver las versiones disponible con:
sdk list java | grep graalce
Luego instalas va última versión disponible y configura la variable de entorno GRAALVM_HOME tal como explicamos antes para Mandrel.
Para profundizar más en las diferencias entre GraalVM y Mandrel, visita el artículo GraalVM, Mandrel y el runtime oculto
🧭 Fijar la versión de Java: global y temporal
Una vez que tengas las versiones de Java instaladas, puedes gestionarlas así:
🌐 Establecer Java 21.0.8-tem como predeterminada globalmente (default):
sdk default java 21.0.8-tem
📌 Usar Java 17.0.16-tem solo en la terminal actual (use):
sdk use java 17.0.16-tem
🔄 Actualizar
Siempre es buena práctica mantener estas herramientas actualizadas. Ejecuta periódicamente los comandos:
sdk upgrade quarkus
sdk upgrade maven
sdk upgrade java
Todo listo. Ya puedes comenzar tus misiones por el Quarkiverso. ¡Buen viaje!🚀