[PT-BR] Múltiplas versões do JAVA com SDKMAN!
Tags: java, sdkman, jdk, developer
Published: 2020-10-17 22:07:59

Tem necessidade de manter múltiplas versões do **Java** instalado no computador?

Para este fim, softwares de gerenciamento de versões costumam facilitar a vida do desenvolvedor. 

Uma ferramenta que realiza bem esta atividade é o ***[SDKMAN!](https://sdkman.io/)***.

### O que é o *SDKMAN!*? 

Conforme a definição encontrada no próprio site:

> "SDKMAN! é uma ferramenta para gerenciar versões paralelas de vários **kits de desenvolvimento de software** na maioria dos sistemas baseados em Unix."

Apesar da ferramenta servir para gerenciar diversos tipos de kits de desenvolvimento ou **SDK (*Software Development Kit*)** como ***ant, gradle, maven e outros***, neste post focaremos no kit do **Java**, mais conhecido como **JDK (*Java Development Kit*)**, onde demonstro os comandos básicos para a utilização da ferramenta.

### Instalação

A instalação dependerá de seu sistema operacional, deixo aqui o link da documentação de instalação da ferramenta https://sdkman.io/install.

A versão do **SDKMAN!** utilizada neste post foi a **5.9.0+555**.

### Comandos básicos

Veremos como **listar** as versões da JDK existente, **instalar**, **verificar** a versão utilizada atualmente, **alternar** entre as versões instaladas e **remover** uma versão.

Segue a estrutura de comando base do **SDK**:

- Comando base do SDK:
```
sdk <comando> <sdk>
```
- Em algumas situações o identificador é necessário:
```
sdk <comando> <sdk> <identificador>
```

#### :: Listando versões da JDK
```
sdk list java
```
Uma lista é apresentada com:
- **Fornecedor** (*Vendor*);
- **Uso** (*Use*): Indica se é a versão que está em uso;
- **Versão** (*Version*);
- **Distribuição** (*Dist*);
- **Status** (*Status*): Exibe se está instalado a versão;
- **Identificador** (*Identifier*): utilizado para instalar ou remover uma versão.
![](https://i.imgur.com/yBtnCOu.png)
![](https://i.imgur.com/zSVLDjo.png)

Na imagem acima, podemos ver que existem 2 versões da JDK instalada (**11.0.8** e **8.0.265**), do fornecedor Java.net, e estou usando no momento a versão do **Java 11**.

#### :: Instalando uma versão da JDK
Para realizar uma instalação, o comando utilizado é o ***sdk install***, é necessário informar o identificador da versão.
Segue exemplo de instalação da versão do **java 10**, da distribuição ***open***:
```
sdk install java 10.0.2-open
```
![](https://i.imgur.com/vayjrmp.png)

Após a instalação é perguntado se desejar tornar a versão que acabou de instalar como padrão. 

#### :: Verificando a versão utilizada atualmente

Caso queira saber a versão da JDK utilizada atualmente, basta executar o comando abaixo:

```
sdk current java
```
![](https://i.imgur.com/wrFludG.png)

Executei também a ***java --version*** para confirmar se estava utilizando a versão informada pelo **SDKMAN!**.

#### :: Alternando entre versões instaladas

Existem duas maneiras para alternar entre versões.

- Alternando localmente:
```
sdk use java 8.0.265-open
```

- Alternando o Java padrão do Sistema Operacional:
```
sdk default java 8.0.265-open
```

#### :: Removendo uma versão instalada
```
sdk uninstall java 10.0.2-open
```

## Conclusão

Então, observamos de maneira simples como consultar, instalar, alternar e remover versões da JDK utilizando o ***SDKMAN!***, o que pode facilitar muito o dia a dia do desenvolvedor. 

Para um maior aprofundamento poderá consultar a documentação da ferramenta em https://sdkman.io/.