Skip to main content

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_HOME e atualizar o seu $PATH a cada mudança de projeto é um processo manual, propenso a erros e extremamente trabalhoso.
O Risco

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
É importante lembrar que esse tipo de utilização torna a versão disponível apenas no terminal ou cliente onde o comando foi executado. Para trocas definitivas de versão de forma global, veremos o passo abaixo.

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
Sempre verifique a versão do software após instalações, alterações ou definições de padrão com 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.