====== sdkman ======
* http://sdkman.io/ : 개발자용 애플리케이션, 플랫폼 설지 자동화 툴
* [[groovy:gvm|GVM Groovy Environment Manager]] sdkman으로 바뀌고, groovy 뿐만 아니라 애플리케이션 전반을 커버할 수 있게 된다.
* Linux, Mac, Windows Powershell 등 지원.
===== 유사 애플리케이션 =====
* [[java:jabba|Jabba]]
* [[java:jenv|jenv]]
===== 기본 명령 =====
* [[https://sdkman.io/usage|sdkman usage]]
sdk list java # java 의 각 버전 목록 보여줌
sdk install java 8.0.212.hs-adpt # 특정 버전 Java 설치
sdk use scala 2.12.1 # 특정 버전 사용
sdk default scala 2.11.6 # 시스템 디폴트 지정
sdk current java # 현재 사용중인 버전
sdk upgrade springboot # 업그레이드
sdk upgrade # 모든 업그레이드 대상 목록
sdk selfupdate # sdkman 자체 업그레이드
sdk update # 패키지 정보 업데이트
===== JDK 설치 =====
* https://sdkman.io/jdks
# 전체 목록
sdk ls java
# Amazon Corretto
sdk install java x.y.z-amzn
# GraalVM
sdk install java x.y.z-grl
# Liberica
sdk install java x.y.z-librca
# AdoptOpenJDK
sdk install java x.y.z-adpt
# OpenJDK
sdk install java x.y.z-open
# SapMachine
sdk install java x.y.z-sapmchn
# Zulu
sdk install java x.y.z-zulu
===== sdkman API =====
* sdkman 은 자체 API 서버에서 최신 각 candidate의 버전 목록을 읽어온다.
* 해당 API 서버 주소는 ''~/.sdkman/bin/sdkman-init.sh'' 에서 ''SDKMAN_CANDIDATES_API''값으로 확인 가능하다.
echo $SDKMAN_CANDIDATES_API
> https://api.sdkman.io/2
* ''https://api.sdkman.io/2/candidates///versions/all''
* linux용 java 버전 목록은 다음과 같이 읽을 수 있다.
echo $SDKMAN_PLATFORM
> linux 는 linux64
curl --silent "$SDKMAN_CANDIDATES_API/candidates/java/$SDKMAN_PLATFORM/versions/all" \
| sed 's/,/\n/g'
===== 설치된 버전 목록 확인 script =====
* ''SDKMAN_CANDIDATES_DIR'' 환경변수를 통해 확인할 수 있다.
* ''ls "$SDKMAN_CANDIDATES_DIR/" | grep -v "current"''
ls "$SDKMAN_CANDIDATES_DIR/java" | grep -v "current"
17.0.1-tem
21.3.0.r17-grl
===== 참조 =====
* [[https://www.grailbox.com/2021/04/switch-among-java-versions-fzf-and-sdkman/|Switch Among Java Versions: FZF and SDKMAN! – Grailbox]]
* [[https://gist.github.com/inoperable/8d29907bd58d1298207b3a70960ec03a|sdkman to fzf quick and dirty selection of installed JDKS with fzf in zsh (should work also in bash, i guess)]]