Como instalar/alternar entre várias versões de Java usando SDKMAN

22 de julho de 2020

SDKMAN!

SDKMAN! é uma ferramenta para gerenciar várias versões de kits de desenvolvimento de software no macOS, Linux, WLS, Cygwin, Solaris e FreeBSD. Ele pode instalar e gerenciar Java, Groovy, Scala, Kotlin, Ceylon, Ant, Gradle e muitos mais.

A ferramenta foi inspirada em RVM e rbenv, e requer apenas curl e zip/unzip para funcionar em seu sistema, sendo escrita em Bash (não se preocupe, ela também funciona com Zsh).

Este artigo mostra como instalar o Java usando SDKMAN! (usando seu instalador ou offline usando seus próprios binários Java) e como gerenciar e usar várias versões Java (facilmente configurando uma versão Java como padrão, incluindo a configuração da variável de ambiente JAVA \ _HOME ou alternando versões Java temporariamente para o terminal atual sessão ou apenas para um determinado diretório).

1. Instale o SDKMAN!

Para começar, instale o SDKMAN! interface de linha de comando.

2. Liste todas as versões candidatas de Java

Agora esse SDKMAN! está instalado, vamos colocá-lo em uso. Use este comando para listar todas as versões candidatas de Java:

{{ terminalcard('sdk list java') }}

Isso lista AdoptOpenJDK e as versões que você pode instalar, Amazon Java, Azul Zulu OpenJDK, Java.net etc.

Este é um trecho (a saída é muito grande) do que você veria ao usar o comando "list java":

$ sdk list java
..............................................................
Available Java Versions
==============================================================
 Vendor     |Use| Version   | Dist| Status   | Identifier
--------------------------------------------------------------
 AdoptOpenJDK|  | 14.0.2.j9 | adpt| installed| 14.0.2.j9-adpt     
             |  | 14.0.2.hs | adpt|          | 14.0.2.hs-adpt      
             |  | 13.0.2.j9 | adpt|          | 13.0.2.j9-adpt      
             |  | 13.0.2.hs | adpt|          | 13.0.2.hs-adpt      
             |  | 12.0.2.j9 | adpt|          | 12.0.2.j9-adpt      
             |  | 11.0.8.hs | adpt| installed| 11.0.8.hs-adpt      
             |  | 8.0.262.j9| adpt|          | 8.0.262.j9-adpt     
..............................................................     
 Azul Zulu   |  | 14.0.2    | zulu|          | 14.0.2-zulu         
             |  | 13.0.4    | zulu|          | 13.0.4-zulu         
             |  | 13.0.3.fx | zulu|          | 13.0.3.fx-zulu      
             |  | 12.0.2    | zulu|          | 12.0.2-zulu         
             |  | 11.0.8    | zulu|          | 11.0.8-zulu             
..............................................................   
 Java.net    |  | 16.ea.6   | open|          | 16.ea.6-open        
             |  | 15.ea.32  | open|          | 15.ea.32-open       
             |  | 14.0.2    | open|          | 14.0.2-open         
             |  | 13.0.2    | open|          | 13.0.2-open         
             |  | 12.0.2    | open|          | 12.0.2-open         
             |  | 11.0.7    | open|          | 11.0.7-open         
             |  | 10.0.2    | open|          | 10.0.2-open         
             |  | 9.0.4     | open|          | 9.0.4-open          
             |  | 8.0.252   | open|          | 8.0.252-open        
.............................................................

Preste atenção na coluna Identificador. Esse é o nome do pacote que você precisa usar para instalar uma versão Java.

3. Instale uma versão Java usando SDKMAN!

O comando que você pode usar para instalar uma versão Java é:

{{ terminalcard('sdk install java IDENTIFIER') }}

Substitua IDENTIFIER pelo identificador de versão Java, conforme visto na saída do comando sdk list java.

Por exemplo, para instalar o AdoptOpenJDK versão 11.0.8.hs, o comando de instalação é:

{{ terminalcard('sdk install java 11.0.8.hs-adpt') }}

SDKMAN! também pode instalar uma versão local do Java, como esta:

{{ terminalcard('sdk install java [UNIQUE-IDENTIFIER]/caminho/para/o/Java') }}

Por exemplo, baixe o Oracle Java 14 .tar.gz mais recente (se você não usar nosso instalador Oracle Java), extraia-o e use SDKMAN! para instalá-lo usando:

{{ terminalcard('sdk install java 14.0.2-oracle ~/Downloads/jdk-14.0.2') }}

4. Alterne entre as versões Java

Existem 3 maneiras de gerenciar versões Java usando SDKMAN!:

  • definir uma versão Java como padrão
  • usar uma versão Java apenas para a sessão de terminal atual
  • ativar uma versão específica do Java ao entrar em um diretório

A. Defina uma versão Java como padrão

Para definir uma das versões Java instaladas usando SDKMAN! (não importa se instalado usando seu instalador integrado ou de um diretório local) como a versão Java padrão, use:

{{ terminalcard('sdk default java IDENTIFIER') }}

Substitua IDENTIFIER pelo identificador de versão Java, conforme visto na saída do comando sdk list java.

Por exemplo, para tornar o AdoptOpenJDK versão 11.0.8.hs a versão Java padrão do sistema, use:

{{ terminalcard('sdk default java 11.0.8.hs-adpt') }}

Isso também define a variável de ambiente JAVA_HOME para ~/.sdkman/candidate/java/current.

B. Use uma versão Java apenas para a sessão de terminal atual

{{ terminalcard('sdk use java IDENTIFIER') }}

Substitua IDENTIFIER pelo identificador de versão Java, conforme visto na saída do comando sdk list java.

Por exemplo, defina o 14.0.2-oracle Java instalado localmente como a versão Java para a sessão de terminal atual:

{{ terminalcard('sdk use java 14.0.2-oracle') }}

C. Ative uma versão específica do Java ao inserir um diretório

Execute-o no diretório para o qual deseja usar uma versão Java personalizada:

{{ terminalcard('sdk env init') }}

Um arquivo chamado .sdkmanrc agora foi gerado neste diretório. Abra-o e altere o valor de java = para o identificador de versão Java que deseja usar, por exemplo, 11.0.8.hs-adpt para AdoptOpenJDK 11.0.8.

Agora execute sdk env neste diretório para ativar a versão Java que você configurou no arquivo .sdkmanrc ou edite o arquivo de configuração do SDKMAN! (~/.sdkman/etc/config) e defina sdkman_auto_env = true para que as versões do SDK sejam trocadas automaticamente quando você cd para um diretório.

Não importa como você está usando uma versão Java por meio do SDKMAN!, você pode verificar qual versão Java está em uso atualmente (conforme definido pelo SDKMAN) usando:

{{ terminalcard('sdk current java') }}

Você também pode consultar o Java diretamente sobre a versão atual em uso:

{{ terminalcard('java -version') }}

{{ terminalcard('javac -version') }}

Esse post foi traduzido do site LinuxUprising.com pela rtland.team.

Linux Uprising Blog

Confira a versão original desse post em inglês:

How To Install / Switch Between Multiple Java Versions Using SDKMAN
Propaganda
Propaganda