Um guia passo a passo para instalar e gerenciar múltiplas versões do JDK usando SDKMAN! no Ubuntu, incluindo configuração e verificação do ambiente.
Introdução: O Desafio das Múltiplas Versões do Java
Um dos desafios mais comuns para desenvolvedores Java é gerenciar diferentes versões da plataforma. Projetos diferentes podem exigir versões diferentes do Java, e instalar/desinstalar manualmente essas versões pode ser trabalhoso e propenso a erros. É aqui que o SDKMAN! se torna uma ferramenta indispensável.
O SDKMAN! (Software Development Kit Manager) é um gerenciador de versões que simplifica radicalmente a instalação, configuração e alternância entre diferentes versões do JDK e outras ferramentas de desenvolvimento. Ele resolve o problema de ter várias distribuições instaladas na máquina de forma organizada e eficiente.
Por Que Usar SDKMAN!
Vantagens Principais
Gestão Unificada: Uma única ferramenta para múltiplas versões do JDK
Alternância Fácil: Troca rápida entre versões para diferentes projetos
Instalação Simplificada: Download e configuração automáticos
Atualizações Automáticas: Facilita a atualização para versões mais recentes
Multiplataforma: Funciona igualmente bem no Ubuntu, macOS e Windows (com WSL)
A lista é extensa e inclui distribuições de diversos fornecedores:
Temurin (Eclipse Foundation - nossa escolha recomendada)
Corretto (Amazon)
Oracle (Oracle Corporation)
Microsoft (Microsoft Build)
Azul Zulu (Azul Systems)
Liberica (BellSoft)
E muitas outras...
Instalando o JDK com SDKMAN!
Escolhendo a Distribuição e Versão
Para este curso, utilizaremos o Eclipse Temurin por ser uma distribuição gratuita, de alta qualidade e com suporte de longo prazo (LTS). Vamos instalar duas versões:
Java 17 LTS (17.0.18-tem) - Para compatibilidade nos estudos
Java 25 LTS (25.0.2-tem) - Versão mais recente
Passo 1: Instalar Java 17
Processo de instalação
Download do pacote
Verificação de integridade
Repackaging
Instalação
Configuração como versão padrão
Saída durante a instalação
Passo 2: Instalar Java 25
Observação
O SDKMAN! automaticamente define a última versão instalada como padrão.
Resolvendo Problemas Comuns
Cenário: Comando java não funciona após instalação via SDKMAN!
Às vezes, mesmo após instalar via SDKMAN!, o sistema pode não reconhecer o comando java. Isso geralmente acontece porque:
O SDKMAN! não foi carregado no shell atual
Há conflito com instalações do sistema
Solução
Após instalar o JRE do sistema, o SDKMAN! conseguirá gerenciar corretamente as versões.
Verificando a Instalação do Compilador
Além do runtime (JRE), é essencial verificar se o compilador está instalado:
Gerenciando Múltiplas Versões
Listando Versões Instaladas
Símbolos importantes
>>> indica a versão padrão atual
installed mostra quais versões estão instaladas
Alterando a Versão Padrão
Verificando a Versão Atual
Configuração do Ambiente
Variável JAVA_HOME
O SDKMAN! configura automaticamente a variável JAVA_HOME apontando para a versão atual:
Configuração para IDEs
Para configurar IDEs como IntelliJ IDEA, Eclipse ou VS Code:
IntelliJ IDEA:
File → Project Structure → SDKs
Add New SDK → JDK
Navegue até ~/.sdkman/candidates/java/versao-desejada
VS Code:
Abra Command Palette (Ctrl+Shift+P)
"Java: Configure Java Runtime"
Selecione o JDK do SDKMAN!
Comandos Essenciais do SDKMAN!
Comando
Descrição
Exemplo
sdk list java
Lista todas as versões disponíveis
sdk list java
sdk install
Instala uma versão específica
sdk install java 17.0.18-tem
sdk uninstall
Remove uma versão instalada
sdk uninstall java 25.0.2-tem
sdk use
Usa uma versão no shell atual
sdk use java 17.0.18-tem
sdk default
Define versão padrão para todos shells
sdk default java 17.0.18-tem
sdk current
Mostra versão atual
sdk current java
sdk upgrade
Atualiza o SDKMAN!
sdk upgrade
sdk flush
Limpa cache e arquivos temporários
sdk flush archives
Boas Práticas e Dicas
1. Instale Apenas o Necessário
Mantenha apenas as versões que realmente usa
Versões antigas ocupam espaço em disco
2. Use .sdkmanrc para Projetos
Crie um arquivo .sdkmanrc na raiz do projeto:
E use:
3. Mantenha o SDKMAN! Atualizado
4. Solução de Problemas
Comandos não encontrados Solução: Execute source "$HOME/.sdkman/bin/sdkman-init.sh"
Instalação falha Solução: Verifique conexão de internet e espaço em disco
Conflito com instalações do sistema Solução: Use sdk default para definir a precedência
Conclusão: Um Ambiente Java Bem Configurado
Com o SDKMAN! instalado e configurado, você tem:
Controle total sobre as versões do Java no seu sistema
Capacidade de alternar entre versões para diferentes projetos
Instalação simplificada de novas versões e distribuições
Ambiente consistente entre diferentes sistemas operacionais
Para este curso, utilizaremos principalmente o Java 17 LTS (17.0.18-tem) por ser uma versão estável, amplamente adotada no mercado e com excelente suporte. O Java 25 foi instalado para demonstração e para que você possa experimentar as funcionalidades mais recentes quando desejar.
Lembre-se: a habilidade de gerenciar múltiplas versões do Java é uma competência valiosa para qualquer desenvolvedor Java, especialmente em ambientes onde diferentes projetos podem exigir diferentes versões da plataforma. O SDKMAN! torna esse gerenciamento simples, eficiente e livre de erros.
# Instalação do SDKMAN!
curl -s "https://get.sdkman.io" | bash
# Após a instalação, carregue o SDKMAN! no shell atual
source "$HOME/.sdkman/bin/sdkman-init.sh"
# Verifique se a instalação foi bem-sucedida
sdk version
SDKMAN!
script: 5.20.0
native: 0.7.16
# Tente executar o comando java
java
# Se o Java não estiver instalado, você verá uma mensagem como:
# Command 'java' not found, but can be installed with:
# sudo apt install openjdk-11-jre-headless # version 11.0.30+7-1ubuntu122.04, or
# sudo apt install default-jre # version 2:1.11-72build2
# etc...
# Listar todas as versões disponíveis
sdk list java
# 1. Garanta que o SDKMAN! está carregado
source "$HOME/.sdkman/bin/sdkman-init.sh"
# 2. Verifique se o Java está instalado via SDKMAN!
sdk current java
# 3. Se ainda não funcionar, pode ser necessário instalar uma JRE do sistema
# (isso cria os links simbólicos necessários)
sudo apt install openjdk-25-jre-headless # Para Ubuntu/Debian
# ou para macOS com Homebrew: brew install openjdk
javac -version
# Saída esperada: javac 17.0.18
# Listar apenas as versões instaladas
sdk list java | grep installed
# Saída esperada:
# Temurin | | 25.0.2 | tem | installed | 25.0.2-tem
# | >>> | 17.0.18 | tem | installed | 17.0.18-tem
# Definir Java 17 como padrão para todos os shells
sdk default java 17.0.18-tem
# Ou usar Java 17 apenas no shell atual
sdk use java 17.0.18-tem
# Verificar qual versão está sendo usada
sdk current java
# Saída: Current default java version 17.0.18-tem
# Verificar via comando java
java -version
# Saída esperada:
# openjdk version "17.0.18" 2024-10-15
# OpenJDK Runtime Environment Temurin-17.0.18+10 (build 17.0.18+10)
# OpenJDK 64-Bit Server VM Temurin-17.0.18+10 (build 17.0.18+10, mixed mode, sharing)