Управляем версиями SDKs без головной боли

Тут я хочу немного рассказать о замечательном инструменте позволяющем легко, а главное быстро менять версии Java и не только.

SDKMan это инструмент позволяющий управлять версиями довольно большого количества SDK и/или Maven, Gradle и т.д. Полный список всего что он поддерживает можно найти тут.

Мы же рассмотрим возможности этого инструмента на примере Java и то чем он полезен.

Установка

Первое что нам необходимо это установить SDKMan на ваш компьютер.

SDKMan работает на следующих OS:

Это актуальный список на момент написание этого гайда.

И так теперь открываем ваш любимый CommandLine или Terminal и выполняем следующую команду, которая скачает установочный пакет SDKMan и второй командой активируем его:

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

Готово, теперь мы можем проверить работает ли sdkman корректно:

sdk version

Официальную инструкцию по установке вы можете прочитать на официальном сайте.

Управление версиями Java/Kotlin

Первое что мы сделаем это посмотрим список всех доступных версий Java для установки:

> sdk list java

================================================================================
Available Java Versions
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 AdoptOpenJDK  |     | 16.0.0.j9    | adpt    |            | 16.0.0.j9-adpt
               |     | 16.0.0.hs    | adpt    |            | 16.0.0.hs-adpt
               |     | 11.0.10.j9   | adpt    |            | 11.0.10.j9-adpt
               |     | 11.0.10.hs   | adpt    |            | 11.0.10.hs-adpt
               | >>> | 11.0.9.j9    | adpt    | local only | 11.0.9.j9-adpt
               |     | 8.0.282.j9   | adpt    |            | 8.0.282.j9-adpt
               |     | 8.0.282.hs   | adpt    |            | 8.0.282.hs-adpt
 Amazon        |     | 16.0.0.36.1  | amzn    |            | 16.0.0.36.1-amzn
               |     | 15.0.2.7.1   | amzn    |            | 15.0.2.7.1-amzn
               |     | 11.0.10.9.1  | amzn    |            | 11.0.10.9.1-amzn
               |     | 8.282.08.1   | amzn    |            | 8.282.08.1-amzn

Выбрав из списка нужную вам версию выполняем установку следующей командой:

sdk install java 16.0.0.j9-adpt

Обратите внимание! Необходимой вам версия находится в колонке "Identifier".

Все установленные SDK будут расположены в корневой директории ~/.sdkman/candidates/java/:

ls -al ~/.sdkman/candidates/java/

Как вы понимаете мы можем установить несколько версий SDK и переключаться между ними:

sdk use java 11.0.9.j9-adpt

Для того чтобы установить версию по умолчанию:

sdk default java 8.0.282.j9-adpt

Все эти команды install, use и default также применимы и к примерам ниже.

Дополнительные инструменты

Помимо SDK мы можем установить необходимые нам инструменты такие как:

  • Maven
  • Gradle
  • Spring Boot CLI
sdk install maven
sdk install gradle
sdk install springboot

В данном примере мы не указывали версию, в таком случаем будет взята последняя стабильная версия. Также применимо ко всем SDKs.

Нужен ли мне SDKMan?

Если вам приходится работать с несколькими версиями Java или с одновременно несколькими SDK то это уже тот минимум при котором я рекомендую добавить себе в список необходимых инструментов SDKMan!

С помощью этого инструмента мы избавляемся от головной боли по установке и переустановки версий SDK и нужных для работы инструментов.