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

2

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

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay