DEV Community

Cover image for SDKMAN! Instalando e utilizando várias versões do Java e de seus amigos
Kleber Bonassi
Kleber Bonassi

Posted on

SDKMAN! Instalando e utilizando várias versões do Java e de seus amigos

Atualmente a melhor maneira de instalar a JDK e também o Kotlin, o Maven, o Gradle e mais alguns outros "amigos" do Java, para os desenvolvedores destas stacks, é através do SDKMAN!

O SDKMAN! é um instalador e gerenciador das versões destas ferramentas. É multiplataforma, funcionando perfeitamente em GNU/Linux, MacOS e Windows. Ele foi construído por desenvolvedores, para desenvolvedores, então essa galera sabe bem o que nós desenvolvedores precisamos no dia-a-dia.

Por vezes precisamos manter mais de uma versão da JDK, por exemplo mantendo Java 8, mas também queremos o Java 17, versões LTS, ou mesmo versões intermediárias, como o Java 19, sem contar que podemos instalar versões diferentes da JDK e de vendors também, como a OpenJDK, GraalVM, Zulu, Corretto entre outras e quando precisamos ter estas versões diversas instaladas na mesma máquina, acabamos tendo um trabalho para mudar a versão no path ou utilizarmos de artíficios como ter um script para fazer este trabalho. Com o SDKMAN! tudo fica muito fácil e organizado, desde a instalação destas ferramentas e posterior troca da versão que você deseja utilizar naquele momento. Neste artigo vamos ver como podemos ter essa mágica à disposição.

Instalação

Aqui estou cobrindo a instalação e uso do SDKMAN! no Ubuntu GNU/Linux, mas como mencionei acima, é possível te-lo rodando no Windows e no MacOS. Estou executando o Ubuntu 22.04 LTS, se você usa outro sabor de GNU/Linux ou mesmo outra versão do Ubuntu, os comandos podem ser diferentes.

No Ubuntu antes de instalar o SDKMAN! propriamente dito, precisamos ter instalado o curl. Para isto, no terminal, execute o comando abaixo:


sudo apt install curl

Enter fullscreen mode Exit fullscreen mode

Após ter o curl instalado, podemos seguir com a instalação do SDKMAN! com o comando:


curl -s "https://get.sdkman.io" | bash

Enter fullscreen mode Exit fullscreen mode

A saída deste comando será algo como:


...
Set version to 5.18.2 ...
Set native version to 0.4.6 ...
Attempt update of interactive bash profile on regular UNIX...
Added sdkman init snippet to /home/kleber/.bashrc
Attempt update of zsh profile...
Updated existing /home/kleber/.zshrc



All done!


You are subscribed to the STABLE channel.

Please open a new terminal, or run the following in the existing one:

    source "/home/kleber/.sdkman/bin/sdkman-init.sh"

Then issue the following command:

    sdk help

Enjoy!!!

Enter fullscreen mode Exit fullscreen mode

Então temos ao final da saída do comando acima, que devemos executar outro comando (substitua USUARIO pelo seu usuário):


source "/home/USUARIO/.sdkman/bin/sdkman-init.sh"

Enter fullscreen mode Exit fullscreen mode

Feito isto o SDKMAN! está instalado, agora vamos instalar algumas versões de JDK e alguns complementos.

Instalação da JDK

No terminal, podemos executar o comando abaixo para listar as JDKs disponíveis para instalação:


sdk list java 

Enter fullscreen mode Exit fullscreen mode

Ao executar o comando acima, teremos uma saída como a abaixo:


================================================================================
Available Java Versions for Linux 64bit
================================================================================
Vendor         | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
Corretto       |     | 21.0.2       | amzn    |            | 21.0.2-amzn         
               |     | 21.0.1       | amzn    |            | 21.0.1-amzn         
               |     | 17.0.10      | amzn    |            | 17.0.10-amzn        
               |     | 17.0.9       | amzn    |            | 17.0.9-amzn         
               |     | 11.0.22      | amzn    |            | 11.0.22-amzn        
               |     | 11.0.21      | amzn    |            | 11.0.21-amzn        
               |     | 8.0.402      | amzn    |            | 8.0.402-amzn        
               |     | 8.0.392      | amzn    |            | 8.0.392-amzn        
Dragonwell     |     | 17.0.9       | albba   |            | 17.0.9-albba        
:

Enter fullscreen mode Exit fullscreen mode

Teclando as próximas páginas serão exibidas e podemos ver que temos a nossa disposição várias versões da JDK de vários vendors, como Oracle, OpenJDK, Amazon, Zulu, Microsoft entre outras.

Então por exemplo vamos instalar a versão 21 da OpenJDK, para isto execute:


sdk install java 21.0.2-open

Enter fullscreen mode Exit fullscreen mode

E teremos uma saída como:


Downloading: java 21.0.2-open

In progress...

######################################################################### 100,0%

Repackaging Java 21.0.2-open...

Done repackaging...

Installing: java 21.0.2-open
Done installing!


Setting java 21.0.2-open as default.

Enter fullscreen mode Exit fullscreen mode

Se agora executarmos:


java --version

Enter fullscreen mode Exit fullscreen mode

Poderemos confirmar que temos a JVM instalada bem como a JDK que pode ser confirmada com o comando:


javac --version

Enter fullscreen mode Exit fullscreen mode

Agora vamos supor que gostaríamos também de ter instalada a versão 17 da GraalVM. Então vamos instalar a GraalVM concomitantemente ao OpenJDK. Para isto execute agora:


sdk install java 17.0.9-graalce

Enter fullscreen mode Exit fullscreen mode

Ao instalar mais de uma JDK, somos questionados se queremos que esta nova instalação seja a default ou não:


Do you want java 17.0.9-graalce to be set as default? (Y/n):

Enter fullscreen mode Exit fullscreen mode

No meu exemplo vou colocar para a GraalVM ser a default e então se confirmarmos com o mesmo comando que fizemos para a OpenJDK, a saída agora será um pouco diferente pois estará mostrando que estamos utilizando a GraalVM, execute:


java --version

Enter fullscreen mode Exit fullscreen mode

E como saída teremos:


openjdk 17.0.9 2023-10-17
OpenJDK Runtime Environment GraalVM CE 17.0.9+9.1 (build 17.0.9+9-jvmci-23.0-b22)
OpenJDK 64-Bit Server VM GraalVM CE 17.0.9+9.1 (build 17.0.9+9-jvmci-23.0-b22, mixed mode, sharing)

Enter fullscreen mode Exit fullscreen mode

Repare que agora temos como saída a informação que nosso Java é a versão 17 da GraalVM.

Certo, e como podemos utilizar a outra JDK que temos instalada? Com o comando abaixo definimos qual JDK queremos utilizar:


sdk use java 21.0.2-open

Enter fullscreen mode Exit fullscreen mode

Para saber qual JDK está setada atualmente, também podemos executar:


sdk current

Enter fullscreen mode Exit fullscreen mode

Com estes poucos comandos fica demonstrado o quão simples é o gerenciamento de versões diferentes da JDK, bem como de vendors distintos, para utilização na mesma máquina. Um exemplo de uso disto é quando precisamos desenvolver algo novo em uma nova versão da JDK, mas por vezes temos o compromisso de manter código de uma versão anterior, na vida real, existem muitos projetos ainda rodando em Java 8 ou 11.

Complementos

Para trabalhar com Java é quase sempre necessário o uso de um gerenciador de dependências, em geral, Maven ou Gradle.

Em nosso exemplo vamos instalar também o Maven, execute:


sdk install maven 3.9.6

Enter fullscreen mode Exit fullscreen mode

E se quisermos confirmar, podemos executar:


mvn --version

Enter fullscreen mode Exit fullscreen mode

E teremos uma saída como:


Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
Maven home: /home/kleber/.sdkman/candidates/maven/current
Java version: 21.0.2, vendor: Oracle Corporation, runtime: /home/kleber/.sdkman/candidates/java/21.0.2-open
Default locale: pt_BR, platform encoding: UTF-8
OS name: "linux", version: "6.5.0-15-generic", arch: "amd64", family: "unix"

Enter fullscreen mode Exit fullscreen mode

O lance de poder ter versões distintas para a JDK também vale para tudo o que é possível instalar e gerenciar pelo SDKMAN!, portanto se aplica também ao Maven, por exemplo.

Quer listar as possibilidades de instalação de versões do Maven? Execute:


sdk list maven

Enter fullscreen mode Exit fullscreen mode

Quer listar tudo o que está disponível para ser instalado e gerenciado pelo SDKMAN!? Execute:


sdk list

Enter fullscreen mode Exit fullscreen mode

Bem, o objetivo deste artigo era apresentar o SDKMAN! e suas possibilidades, que ajudam muito no dia-a-dia dos desenvolvedores da stack Java e derivados.

Como dica final, pra se aprofundar mais nos comandos do SDKMAN!, o help pode contribuir muito e para acessa-lo basta executar:


sdk help

Enter fullscreen mode Exit fullscreen mode

Isso é tudo pessoal!

Referências

Top comments (0)