SDKMan 이용하기

SDKMan

SDK man 은 개발 환경에 따라 SDK를 변경하면서 사용할 수 있는 매우 유용한 유틸이다.

복수개의 SDK(Software Development Took Kit) 을 설치해두고, 스위치하면서 사용할 수 있는 장점이 있다.

SDKMan 에서 내용을 확인해 보자.

Install

SDKMan 은 Linux 계열의 OS에서 호환되는 툴이며, Mac OSX, Linux, WSL, Cygwin, Solaris, FreeBSD 등에서 설치가 가능하다.

curl -s "https://get.sdkman.io" | bash

명령을 실행하면 화려한 텍스트 이미지와 함께 SDK가 설치된다.

아래 커맨드로 sdkman 을 초기화 해주고, 환경에 등록해준다.

source "$HOME/.sdkman/bin/sdkman-init.sh"

정상 등록 체크하기

sdk version

SDKMAN 5.11.4+709

5.11.4+709 버젼이 설치된것을 확인할 수 있다.

sdk help 정보 보기

sdk help

아래 내용과 같은 결과를 확인할 수 있다.

Usage: sdk <command> [candidate] [version]
       sdk offline <enable|disable>

   commands:
       install   or i    <candidate> [version] [local-path]
       uninstall or rm   <candidate> <version>
       list      or ls   [candidate]
       use       or u    <candidate> <version>
       completion        <bash|zsh>
       config
       default   or d    <candidate> [version]
       home      or h    <candidate> <version>
       env       or e    [init|install|clear]
       current   or c    [candidate]
       upgrade   or ug   [candidate]
       version   or v
       broadcast or b
       help
       offline           [enable|disable]
       selfupdate        [force]
       update
       flush             [archives|tmp|broadcast|version]

   candidate  :  the SDK to install: groovy, scala, grails, gradle, kotlin, etc.
                 use list command for comprehensive list of candidates
                 eg: $ sdk list
   version    :  where optional, defaults to latest stable if not provided
                 eg: $ sdk install groovy
   local-path :  optional path to an existing local installation
                 eg: $ sdk install groovy 2.4.13-local /opt/groovy-2.4.13

사용방법

사용방법은 아래와 같이 확인할 수 있다.

Usage: sdk <command> [candidate] [version]
       sdk offline <enable|disable>
  • command: 커맨드는 설치, 삭제, 사용 등의 명령이 올 수 있다.
  • candidate: 이것은 제공하는 SDK의 종류를 나타낸다. groovy, scala, grails, gradle, kotlin 등이 있을 수 있으며, 자세한 사항은 SDKMan sdklist 에서 확인할 수 있다.
  • version: 설치할 버젼을 선택할 수 있다.

설치 가능한 Java SDK 확인하기.

이제 Java 를 설치할 것이기 때문에 다음 명령어로 설치가능한 Java SDK를 살펴보자.

sdk list java

결과보기

================================================================================
Available Java Versions
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 AdoptOpenJDK  |     | 16.0.1.j9    | adpt    |            | 16.0.1.j9-adpt      
               |     | 16.0.1.hs    | adpt    |            | 16.0.1.hs-adpt      
               |     | 16.0.0.j9    | adpt    |            | 16.0.0.j9-adpt      
               |     | 16.0.0.hs    | adpt    |            | 16.0.0.hs-adpt      
               |     | 11.0.11.j9   | adpt    |            | 11.0.11.j9-adpt     
               |     | 11.0.11.hs   | adpt    |            | 11.0.11.hs-adpt     
               |     | 11.0.10.j9   | adpt    |            | 11.0.10.j9-adpt     
               |     | 11.0.10.hs   | adpt    |            | 11.0.10.hs-adpt     
               |     | 8.0.292.j9   | adpt    |            | 8.0.292.j9-adpt     
               |     | 8.0.292.hs   | adpt    |            | 8.0.292.hs-adpt     
               |     | 8.0.282.j9   | adpt    |            | 8.0.282.j9-adpt     
               |     | 8.0.282.hs   | adpt    |            | 8.0.282.hs-adpt     
 Amazon        |     | 16.0.1.9.1   | amzn    |            | 16.0.1.9.1-amzn     
               |     | 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.11.9.1  | amzn    |            | 11.0.11.9.1-amzn    
               |     | 11.0.10.9.1  | amzn    |            | 11.0.10.9.1-amzn    
               |     | 8.292.10.1   | amzn    |            | 8.292.10.1-amzn     
               |     | 8.282.08.1   | amzn    |            | 8.282.08.1-amzn     
 Azul Zulu     |     | 16.0.1       | zulu    |            | 16.0.1-zulu         
               |     | 16.0.0       | zulu    |            | 16.0.0-zulu         
               |     | 16.0.0.fx    | zulu    |            | 16.0.0.fx-zulu      
               |     | 15.0.2.fx    | zulu    |            | 15.0.2.fx-zulu      
               |     | 11.0.11      | zulu    |            | 11.0.11-zulu        
               |     | 11.0.10      | zulu    |            | 11.0.10-zulu        
               |     | 11.0.10.fx   | zulu    |            | 11.0.10.fx-zulu     
               |     | 8.0.292      | zulu    |            | 8.0.292-zulu        
               |     | 8.0.282      | zulu    |            | 8.0.282-zulu        
               |     | 8.0.282.fx   | zulu    |            | 8.0.282.fx-zulu     
               |     | 7.0.302      | zulu    |            | 7.0.302-zulu        
               |     | 7.0.292      | zulu    |            | 7.0.292-zulu        
 BellSoft      |     | 16.0.1.fx    | librca  |            | 16.0.1.fx-librca    
               |     | 16.0.1       | librca  |            | 16.0.1-librca       
               |     | 16.0.0.fx    | librca  |            | 16.0.0.fx-librca    
               |     | 16.0.0       | librca  |            | 16.0.0-librca       
               |     | 11.0.11.fx   | librca  |            | 11.0.11.fx-librca   
               |     | 11.0.11      | librca  |            | 11.0.11-librca      
               |     | 11.0.10.fx   | librca  |            | 11.0.10.fx-librca   
               |     | 11.0.10      | librca  |            | 11.0.10-librca      
               |     | 8.0.292.fx   | librca  |            | 8.0.292.fx-librca   
               |     | 8.0.292      | librca  |            | 8.0.292-librca      
               |     | 8.0.282.fx   | librca  |            | 8.0.282.fx-librca   
               |     | 8.0.282      | librca  |            | 8.0.282-librca      
 GraalVM       |     | 21.1.0.r16   | grl     |            | 21.1.0.r16-grl      
               |     | 21.1.0.r11   | grl     |            | 21.1.0.r11-grl      
               |     | 21.0.0.2.r11 | grl     |            | 21.0.0.2.r11-grl    
               |     | 21.0.0.2.r8  | grl     |            | 21.0.0.2.r8-grl     
               |     | 20.3.2.r11   | grl     |            | 20.3.2.r11-grl      
               |     | 20.3.1.2.r11 | grl     |            | 20.3.1.2.r11-grl    
               |     | 20.3.1.2.r8  | grl     |            | 20.3.1.2.r8-grl     
               |     | 19.3.6.r11   | grl     |            | 19.3.6.r11-grl      
               |     | 19.3.5.r11   | grl     |            | 19.3.5.r11-grl      
               |     | 19.3.5.r8    | grl     |            | 19.3.5.r8-grl       
 Java.net      |     | 17.ea.23     | open    |            | 17.ea.23-open       
               |     | 17.ea.22     | open    |            | 17.ea.22-open       
               |     | 17.ea.21     | open    |            | 17.ea.21-open       
               |     | 17.ea.20     | open    |            | 17.ea.20-open       
               |     | 17.ea.19     | open    |            | 17.ea.19-open       
               |     | 17.ea.7.lm   | open    |            | 17.ea.7.lm-open     
               |     | 17.ea.3.pma  | open    |            | 17.ea.3.pma-open    
               |     | 16           | open    |            | 16-open             
               |     | 16.0.1       | open    |            | 16.0.1-open         
               |     | 11.0.2       | open    |            | 11.0.2-open         
 Microsoft     |     | 11.0.11.9.1  | ms      |            | 11.0.11.9.1-ms      
               |     | 11.0.10.9    | ms      |            | 11.0.10.9-ms        
 SAP           |     | 16           | sapmchn |            | 16-sapmchn          
               |     | 16.0.1       | sapmchn |            | 16.0.1-sapmchn      
               |     | 15.0.2       | sapmchn |            | 15.0.2-sapmchn      
               |     | 11.0.11      | sapmchn |            | 11.0.11-sapmchn     
               |     | 11.0.10      | sapmchn |            | 11.0.10-sapmchn     
 TravaOpenJDK  |     | 11.0.9       | trava   |            | 11.0.9-trava        
               |     | 8.0.232      | trava   |            | 8.0.232-trava       
================================================================================
Use the Identifier for installation:

    $ sdk install java 11.0.3.hs-adpt
================================================================================

위 내용과 같이 설치가능한 JDK 버젼들을 확인할 수 있다.

우리는 위에서 AdoptOpenJDK 11 버젼을 설치할 것이다.

JDK 설치하기.

설치형식

설치 형식은 아래와 같다.

sdk install <candidate> <version>

Java 11설치하기

sdk install java 11.0.11.j9-adpt

이미 설치되어 있다면 다음과 같은 메시지가 나온다.

java 11.0.11.j9-adpt is already installed.

Java 16 버젼 설치해보기.

이제 Java 16 버젼을 설치해보자.

sdk install java 16.0.1.hs-adpt

이미 설치되어 있는 버젼이 있다면 기본 설정을 물어보는 화면이 아래와 같이 나온다.

Downloading: java 16.0.1.hs-adpt

In progress...

############################################################################################################################### 100.0%############################################################################################################################### 100.0%

Repackaging Java 16.0.1.hs-adpt...

Done repackaging...
Cleaning up residual files...

Installing: java 16.0.1.hs-adpt
Done installing!

Do you want java 16.0.1.hs-adpt to be set as default? (Y/n): Y

Setting java 16.0.1.hs-adpt as default.

테스트하기.

java --version

openjdk 16.0.1 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-16.0.1+9 (build 16.0.1+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-16.0.1+9 (build 16.0.1+9, mixed mode, sharing)

16.0.1 버젼이 설치되어 있는것을 확인할 수 있다.

버젼 교체하기.

11버젼도 존재하고, 16버젼도 존재한다, 이제 11버젼으로 교체해 보자.

sdk use java 11.0.11.j9-adpt

Using java version 11.0.11.j9-adpt in this shell.

테스트하기

java --version

openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
Eclipse OpenJ9 VM AdoptOpenJDK-11.0.11+9 (build openj9-0.26.0, JRE 11 Mac OS X amd64-64-Bit Compressed References 20210421_957 (JIT enabled, AOT enabled)
OpenJ9   - b4cc246d9
OMR      - 162e6f729
JCL      - 7796c80419 based on jdk-11.0.11+9)

11 버젼으로 default sdk 가 변경되었다.

삭제하기.

이제 java 16을 사용하지 않는다고 해보자.

설치된 버젼을 삭제하기 위해서 다음 명령을 수행하자.

sdk uninstall java 16.0.1.hs-adpt

Deselecting java 16.0.1.hs-adpt...

Uninstalling java 16.0.1.hs-adpt...

삭제여부 확인하기

이제 삭제가 정상으로 되었는지 확인해보자.


sdk list java                    
================================================================================
Available Java Versions
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 AdoptOpenJDK  |     | 16.0.1.j9    | adpt    |            | 16.0.1.j9-adpt      
               |     | 16.0.1.hs    | adpt    |            | 16.0.1.hs-adpt      
               |     | 16.0.0.j9    | adpt    |            | 16.0.0.j9-adpt      
               |     | 16.0.0.hs    | adpt    |            | 16.0.0.hs-adpt      
               | >>> | 11.0.11.j9   | adpt    | installed  | 11.0.11.j9-adpt     
               |     | 11.0.11.hs   | adpt    |            | 11.0.11.hs-adpt     
               |     | 11.0.10.j9   | adpt    |            | 11.0.10.j9-adpt     
               |     | 11.0.10.hs   | adpt    |            | 11.0.10.hs-adpt     
               |     | 8.0.292.j9   | adpt    |            | 8.0.292.j9-adpt     
               |     | 8.0.292.hs   | adpt    |            | 8.0.292.hs-adpt     
               |     | 8.0.282.j9   | adpt    |            | 8.0.282.j9-adpt     
               |     | 8.0.282.hs   | adpt    |            | 8.0.282.hs-adpt     
 Amazon        |     | 16.0.1.9.1   | amzn    |            | 16.0.1.9.1-amzn  

... 생략

기타 상세한 사용법 알아보기.

사용법 에서 상세한 사용법을 확인할 수 있다.

Wrap Up

SDKman 은 개발시 자유로운 버젼 변경을 원활하게 수행할 수 있도록 해준다.

설치된 SDK의 경로를 찾아서 shell의 환경 변수를 바꾸어 주는 방식을 이용하지 않아도, 편리하게 원하는 버젼으로 교체할 수 있게 해주어, 개발자에게 매우 효과적인 툴이 될 것이다.