SDK! 으로 Java 버전 관리하기

SDKMAN!

SDMMAN!은 대부분의 유닉스 기반 시스템에서 여러가지 SDK(Software Development Kits)의 병렬 버전을 관리하기 위한 도구입니다.

SDKMAN!을 이용해서 여러 Java 버전을 관리할 수 있는 방법에 대해 알아보겠습니다.

Installation (macos 기준)

터미널 프로그램을 실행한 후 아래 명령을 입력합니다.

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

설치 완료되면 터미널에 아래 명령을 실행합니다.

저는 .zshrc, .bash_profile 같은 파일에 추가해서 사용하고 있습니다.

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

마지막으로, 설치된 SDKMAN!의 버전을 확인하여 성공적으로 설치가 완료됐는지 확인합니다.

$ sdk version

SDKMAN 5.7.2+323

Uninstallation

SDKMAN! 삭제는 설치된 SDKMAN!을 백업합니다. 설치된 경로는 ~/.sdkman 입니다. 그리고, rm 명령으로 해당 폴더를 삭제하면 됩니다.

$ rm -rf ~/.sdkman

마지막으로 .bashrc, .bash_profile, .zshrc 등에 설정한 내용을 삭제합니다.

Java 설치하기

# 설치할 Java 버전 조회
$ sdk list java
================================================================================
Available Java Versions
================================================================================
     12.ea.20-open
     11.0.1-zulu
     11.0.1-open
     10.0.2-zulu
     10.0.2-open
 > + 10.0.1-zulu
     9.0.7-zulu
     9.0.4-open
     8.0.192-zulu
     8.0.191-oracle
     7.0.181-zulu
     1.0.0-rc-10-grl
     1.0.0-rc-9-grl
     1.0.0-rc-8-grl


================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

# 8.0.192-zulu 버전 설치
$ sdk install java 8.0.192-zulu

# 최신 버전의 Java를 설치하는 경우 설치 명령에 버전을 입력하지 않으면 됩니다.
# sdk install java

Downloading: java 8.0.192-zulu

In progress...

################################ 63.9%
.. 생략 ..

Done installing!

Java 설치가 완료되면 방금 설치한 버전을 기본 값으로 설정할지 묻는 메시지가 나타납니다. 그러면 ‘yes’ 를 선택해서 입력하거나 ‘엔터키’를 입력하면 됩니다.

설치된 Java 위치 ~/.sdkman/candidates/java/

설치된 Java 버전 삭제

설치된 Java 버전을 아래 명령을 실행하여 삭제할 수 있습니다.

$ sdk uninstall java 8.0.192-zulu

설치 가능한 Java 버전 조회

설치 가능한 Java 버전 목록을 조회하려면, 터미널에서 아래 명령을 입력하고 실행합니다.

$ sdk list java

================================================================================
Available Java Versions
================================================================================
     13.ea.02-open
     12.ea.26-open
   * 11.0.1-zulu
     11.0.1-open
     10.0.2-zulu
     10.0.2-open
     9.0.7-zulu
     9.0.4-open
 > * 8.0.192-zulu
     8.0.191-oracle
     7.0.181-zulu
     1.0.0-rc-10-grl
     1.0.0-rc-9-grl
     1.0.0-rc-8-grl


================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

저의 macOS에는 총 2개의 Java 버전(8.0.192-zulu, 11.0.1-zulu)이 설치되어 있고, 현재 사용하고 있는 버전은 8.0.192-zulu 버전이 되겠습니다.

설치된 Java 버전 변경

현재 사용하고 있는 버전을 11.0.1-zulu 버전으로 변경해보겠습니다.

$ sdk use java 11.0.1-zulu

# 현재 사용 버전 확인
$ sdk current

Using:

java: 11.0.1-zulu

Java 버전이8.0.192-zulu 에서 11.0.1-zulu로 변경된 것을 확인할 수 있습니다. 하지만, 중요한 점은 현재 사용하고 있는 쉘(shell)의 Java 버전만 변경됐다는 것입니다.

버전 변경 전

버전 변경 후

모든 쉘(shell)에 동일한 버전으로 변경되길 원한다면 default 명령을 사용해야 합니다.

저의 경우 보통은 Java 8.0.x 버전을 기본으로 사용하다가, 간단한 코드 작성하고 결과 확인하기위해 jshell을 실행시키기 위해 11.0.x 버전으로 변경해서 사용하고 있습니다.

Default 버전 지정

설치된 Java 버전 중 11.0.1-zulu를 default 버전으로 변경합니다.

$ sdk default java 11.0.1-zulu

모든 쉘(shell)에서 11.0.1-zulu 버전을 사용할 수 있습니다.


$ sdk list java
================================================================================
Available Java Versions
================================================================================
     13.ea.02-open
     12.ea.26-open
 > * 11.0.1-zulu
     11.0.1-open
     10.0.2-zulu
     10.0.2-open
     9.0.7-zulu
     9.0.4-open
   * 8.0.192-zulu
     8.0.191-oracle
     7.0.181-zulu
     1.0.0-rc-10-grl
     1.0.0-rc-9-grl
     1.0.0-rc-8-grl


================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

버전 업그레이드

Java 버전의 현재 최신 정보를 확인하고, 새로운 버전이 있을 경우 업그레이드 할 수 있습니다. 저의 경우 설치된 두개의 버전보다 11.0.1-open 버전이 최신이라는 것을 알 수 있습니다.

최신 버전으로 업그레이드하고 default 버전으로 설정할 것인지 물어보는 대화창에 Y를 입력합니다.

$ sdk upgrade java

Upgrade:
java (11.0.1-zulu, 8.0.192-zulu < 11.0.1-open)

Upgrade candidate(s) and set latest version(s) as default? (Y/n):

최신 버전으로 업그레이드 완료되고 default 버전으로 설정됐는지 확인할 수 있습니다.

$ sdk list java
================================================================================
Available Java Versions
================================================================================
     13.ea.02-open
     12.ea.26-open
   * 11.0.1-zulu
 > * 11.0.1-open
     10.0.2-zulu
     10.0.2-open
     9.0.7-zulu
     9.0.4-open
   * 8.0.192-zulu
     8.0.191-oracle
     7.0.181-zulu
     1.0.0-rc-10-grl
     1.0.0-rc-9-grl
     1.0.0-rc-8-grl


================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

정리

지금까지 SDKMAN! 설치부터 Java 설치 그리고 버전 관리를 위한 기본 사용법을 정리해봤습니다. 파일을 다운로드 받아 설치하고, 환경변수를 설정하던 방식보다 훨씬 간단하게 Java 버전을 관리할 수 있어 테스트 환경을 구성하거나 테스트 코드를 작성할 때 유용하게 활용할 수 있을 거라고 생각합니다.

jenv 를 사용해서 Java 버전을 관리할 수도 있습니다.

참고

댓글남기기