Dziś krótko o narzędziu SDKMAN. Od Java 9 zmieniony został schemat wersjonowania (z 1.X na X). Cykl wydawniczy również przyspieszył. Możliwe, że w projektach używamy danej wersji Java, a pojawia się nowa i chcielibyśmy posmakować nowej wersji lub spróbować przeportować projekt. Finalnie na naszej maszynie mamy kilka JDK.
Przełączenie JDK (Java Development Kit) to proces składający się z:
- Instalacji wybranej JDK pod naszą platformę
- Konfiguracji: zmianę zmiennych
$JAVA_HOME
i $PATH
Przedstawiam SDKMAN
Dla tych, którzy nie znają jeszcze tego narzędzia przedstawiam SDKMAN (SDK Manager).
SDKMAN to narzędzie oryginalnie stworzone dla *nix-owych systemów operacyjnych. W prosty sposób pozwala na pobieranie i przełączanie się pomiędzy różnymi SDK na maszynie.
Wspiera instalację wielu środowisk SDK, np. dla Java, Groovy, Scala, Kotlin, Maven, Micronaut. Poprzednio znane jako GVM (Groovy enVironment Manager).
W tym wpisie skupię się na instalacji narzędzia na Windows i pokrótce przejdę przez najważniejsze funkcje.
Ważne: zakładam, że na swojej maszynie używasz Git Bash Shell.
Przygotowanie środowiska Windowsa
SDKMAN to skrypt napisany w bash. Dlatego, aby został poprawnie zinterpretowany powinieneś mieć konsole bashową pod Windows, np. Git Bash Shell.
Środowisko Git Bash (MinGW) posiada skompilowane pod Windows odpowiedniki linuxowych narzędzi, których używa skrypt. Brakuje w nim jednak programu zip.
Popularnym odpowiednikiem jest 7zip. Po instalacji 7zip upewniamy się, czy komenda jest dostępna z poziomu środowiska bash. Wprowadzasz go na $PATH
lub tworzysz link symboliczny do folderu MinGW, który już jest na $PATH
:
ln -s /c/Program\ Files/7-Zip/7z.exe /c/Program\ Files/Git/mingw64/bin/zip.exe
Teraz możesz zainstalować SDKMAN.
Instalacja SDKMAN
Aby zainstalować menedżera, postępuj zgodnie ze wskazówkami na https://sdkman.io/. Należy wykonać komendę pobierającą i uruchamiającą skrypt basha:
curl -s "https://get.sdkman.io" | bash
Narzędzie zostanie pobrane do folderu ~/.sdkman
(w folderze użytkownika).
Zrestartuj konsolę i możesz używać SDKMAN:
$ sdk version
SDKMAN 5.9.1+575
Instalacja SDK
Pora na instalację SDK.
$ sdk list
Możesz wyszukać taką wersję Java oraz dostawcę implemenracji, która Ci odpowiada:
$ sdk list java
================================================================================
Available Java Versions
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
...
Java.net | | 17.ea.2 | open | | 17.ea.2-open
| | 16.ea.29 | open | | 16.ea.29-open
| | 16.ea.9.lm | open | | 16.ea.9.lm-open
| | 16.ea.3.pma | open | | 16.ea.3.pma-open
| | 15.0.1 | open | | 15.0.1-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.2 | open | | 11.0.2-open
| | 10.0.2 | open | | 10.0.2-open
| | 9.0.4 | open | | 9.0.4-open
| | 8.0.265 | open | | 8.0.265-open
...
================================================================================
Use the Identifier for installation:
$ sdk install java 11.0.3.hs-adpt
================================================================================
Zainstaluję zatem OpenJDK 11.0.2:
$ sdk install java 11.0.2-open
Downloading: java 11.0.2-open
In progress...
######################################################################## 100,0%
Installing: java 11.0.2-open
Done installing!
Po instalacji JDK jest dostępne, zmienne środowiskowe zostały zmodyfikowane i mogę korzystać z Java:
$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
Gdyby była potrzeba znajomości ścieżki JDK, Java zainstalowała się nam w katalogu użytkownika ~/.sdkman/candidates/
:
$ ls -1 ~/.sdkman/candidates/java/
11.0.2-open/
current/
Przełączanie się pomiędzy wersjami SDK
Na mojej maszynie mam OpenJDK w wersjach 11.0.2 oraz starszą wersję 8.0.265. Aby przełączyć się na inną wersję, wpisz sdk use
:
$ sdk use java 8.0.265-open
Using java version 8.0.265-open in this shell.
$ java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)
Od teraz w aktywnym terminalu jest aktywne wybrane SDK.
Domyślny SDK
Aby zmienić domyślne SDK na inne, otwierane w każdym nowym terminalu, korzystamy z komendy sdk default:
$ sdk default java 11.0.2-open
Default java version set to 11.0.2-open
Zakończenie
Pełną listę komend znajdziesz wpisując sdk help oraz na stronie https://sdkman.io/. Mam nadzieję, że się przyda 👌.
Gdybyś potrzebował jeszcze więcej:
Jesteś Java Developerem?
Przejdź na wyższy poziom wiedzy
„Droga do Seniora” 🔥💪
Jesteś Team Leaderem? Masz zespół?
Podnieś efektywność i wiedzę swojego zespołu 👌
SDKMAN to narzędzie oryginalnie stworzone dla *nix-owych systemów operacyjnych w prosty sposób pozwala na pobieranie i przełączanie się pomiędzy różnymi SDK na maszynie. Wspiera instalację wielu środowisk SDK, np. dla Java, Groovy, Scala, Kotlin, Maven, Micronaut.
Podstawowe komendy to: sdk install, sdk use, sdk default.