Gerenciando Ambientes de Desenvolvimento com SDKMAN!
Se você já precisou alternar entre um projeto que utiliza Java 8 e outro que exige Java 17, sabe que essa tarefa pode ser um pesadelo logístico. Trocar variáveis de ambiente, adicionar ao PATH, manter múltiplos diretórios para cada versão, sempre correndo o risco de ca*** tudo ficar em maus lençóis.
Para resolver esse tipo de problema e dar praticidade ao desenvolvimento que surgiu o SDKMAN!. Um software gestor de SDKs (software development kit). Neste artigo veremos um pouco sobre sua utilização e sobre como pode acelerar e tornar seguras as trocas de versão e intalação de novas tecnologias.
1. O Desafio da Gestão de Versões
Manter múltiplas versões de linguagens e ferramentas na mesma máquina costuma trazer dois problemas principais:
- Conflitos de Instalação: Frequentemente, instaladores sobrescrevem versões anteriores ou criam dependências cruzadas que corrompem o ambiente.
- Inferno das Variáveis de Ambiente: Administrar manualmente as variáveis
$JAVA_HOME,$GROOVY_HOMEe atualizar o seu$PATHa cada mudança de projeto é um processo manual, propenso a erros e extremamente trabalhoso.
Um pequeno erro na configuração do PATH pode fazer com que você compile seu código em uma versão e execute em outra, gerando bugs difíceis de rastrear. Por vezes pode acarretar na quebra do seu SO ou de outros programas ao bagunçar uma rotina exposta nessa variável.
2. O que é o SDKMAN!?
O SDKMAN! (Software Development Kit Manager) é uma ferramenta CLI que automatiza a instalação, remoção e, principalmente, a permuta (switch) entre diferentes versões de SDKs.
Ele funciona como um gerenciador centralizado para ferramentas como Java, Groovy, Scala, Kotlin, Maven, Gradle e muitas outras. Com um simples comando, ele ajusta todas as variáveis de ambiente necessárias de forma transparente.
3. Instalação do SDKMAN!
A instalação é extremamente simples e funciona em sistemas baseados em Unix (Linux, macOS, WSL).
3.1. Baixando instalador:
Abra o seu terminal e execute:
curl -s "[https://get.sdkman.io](https://get.sdkman.io)" | bash
3.2. Instalando:
Após o download, você precisará inicializar o SDKMAN no terminal atual. Para inicializar agora, execute:
source "$HOME/.sdkman/bin/sdkman-init.sh"
3.3. Checando instalação:
Para verificar se a instalação foi bem-sucedida, digite
sdk version
Se tudo der certo, verá uma saída como essa:
SDKMAN!
script: 5.20.0
native: 0.7.14 (linux x86_64)
4. Exemplo Prático: Gerenciando o Java
Vamos ver como instalar e alternar entre versões do Java em poucos segundos.
4.1. Listando as versões disponíveis
Antes de instalar, você pode ver quais versões estão disponíveis para download:
sdk list java
Verá uma tabela com várias versões disponíveis, de várias fontes distintas.
================================================================================
Available Java Versions for Linux 64bit
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
Corretto | | 25.0.1 | amzn | | 25.0.1-amzn
| | 24.0.2 | amzn | | 24.0.2-amzn
| | 23.0.2 | amzn | | 23.0.2-amzn
| | 21.0.9 | amzn | | 21.0.9-amzn
| | 17.0.17 | amzn | | 17.0.17-amzn
| | 11.0.29 | amzn | | 11.0.29-amzn
| | 8.0.472 | amzn | | 8.0.472-amzn
Dragonwell | | 21.0.9 | albba | | 21.0.9-albba
4.2. Instalando versões do Java
Vamos instalar duas versões diferentes (ex: Temurin da Adoptium):
# Instalar Java 17
sdk install java 17.0.8-tem
# Instalar Java 11
sdk install java 11.0.20-tem
A saída gerada será como esta:
Downloading: java 11.0.20-tem
In progress...
##################################################################################################### 100.0%
Repackaging Java 11.0.20-tem...
Done repackaging...
Installing: java 11.0.20-tem
Done installing!
Do you want java 11.0.20-tem to be set as default? (Y/n): Y
Vamos checar se a versão instalada confere com a que escolhemos no SDKMAN!
openjdk version "11.0.20" 2023-07-18
OpenJDK Runtime Environment Temurin-11.0.20+8 (build 11.0.20+8)
OpenJDK 64-Bit Server VM Temurin-11.0.20+8 (build 11.0.20+8, mixed mode)
4.3. Alternando entre versões
Se você precisar usar o Java 17 agora, basta digitar:
sdk use java 17.0.8-tem
4.4. Definindo padrões:
Para definir uma versão como padrão (default) para todos os terminais
sdk default java 17.0.8-tem
java -version, por exemplo.5. Conclusão
O SDKMAN! retira a complexidade de configuração e permite que você foque no que realmente importa: escrever código. É uma ferramenta essencial para manter um ambiente de desenvolvimento limpo, seguro e profissional.