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
Após ter o curl instalado, podemos seguir com a instalação do SDKMAN! com o comando:
curl -s "https://get.sdkman.io" | bash
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!!!
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"
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
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
:
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
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.
Se agora executarmos:
java --version
Poderemos confirmar que temos a JVM instalada bem como a JDK que pode ser confirmada com o comando:
javac --version
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
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):
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
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)
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
Para saber qual JDK está setada atualmente, também podemos executar:
sdk current
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
E se quisermos confirmar, podemos executar:
mvn --version
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"
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
Quer listar tudo o que está disponível para ser instalado e gerenciado pelo SDKMAN!? Execute:
sdk list
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
Isso é tudo pessoal!
Top comments (0)