맥에 여러 자바 버전을 설치했었는데 이제 윈도우즈에서도 여러 자바 버전을 사용할 필요가 생겼다. (이게 다 코틀린 빌드 때문이다.)

sdkman을 이용해 필요한 자바 버전을 윈도우에 설치하려 한다. sdkman은 유닉스와 맥에서도 잘 돌기 때문에 유닉스와 맥에서도 유사할 것이다. sdkmanbashzip을 요구하기 때문에 Git Bash 터미널를 열었다. 아마도 Github Desktop 설치 중에 설치가 된 것 같은데 직접 설치해도 동일할 것이다.

이제 bash 의존성은 해결했으니 zip 의존성을 해결하자. zip을 수동으로 설치하고 싶지 않기 때문에 윈도용 패키지 관리자 Scoop을 이용하기로 한다.

파워셀에서 아래 두 커맨드를 입력하면 설치가 된다. 커맨드라인(cmd)이 아니라는 점을 유의하자.

Set-ExecutionPolicy RemoteSigned -scope CurrentUser
iwr -useb get.scoop.sh | iex

이제 zip을 설치하자.

scoop install zip

그리고 Git Bash에 접속해 sdkman을 설치한다. 파워 셀이 아니라는 것을 유의하자.

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

Git Bash를 다시 열거나 터미널에 아래의 내용을 입력하면 sdkman을 사용할 수 있다.

source "/c/Users/User/.sdkman/bin/sdkman-init.sh"

sdkman이 동작하면 sdk list java를 이용해 설치가능한 자바를 확인할 수 있다.

$ sdk list java
================================================================================
Available Java Versions
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 AdoptOpenJDK  |     | 15.0.2.j9    | adpt    |            | 15.0.2.j9-adpt
               |     | 15.0.2.hs    | adpt    |            | 15.0.2.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.open  | adpt    |            | 11.0.9.open-adpt
               |     | 8.0.282.j9   | adpt    |            | 8.0.282.j9-adpt
               |     | 8.0.282.hs   | adpt    |            | 8.0.282.hs-adpt
               |     | 8.0.275.open | adpt    |            | 8.0.275.open-adpt
 Alibaba       |     | 11.0.9.4     | albba   |            | 11.0.9.4-albba
 Amazon        |     | 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
 Azul Zulu     |     | 15.0.2       | zulu    |            | 15.0.2-zulu
               |     | 15.0.2.fx    | zulu    |            | 15.0.2.fx-zulu
               |     | 11.0.10      | zulu    |            | 11.0.10-zulu
               |     | 11.0.10.fx   | zulu    |            | 11.0.10.fx-zulu
               |     | 8.0.282      | zulu    |            | 8.0.282-zulu
               |     | 8.0.282.fx   | zulu    |            | 8.0.282.fx-zulu
               |     | 6.0.119      | zulu    |            | 6.0.119-zulu
 BellSoft      |     | 15.0.2.fx    | librca  |            | 15.0.2.fx-librca
               |     | 15.0.2       | librca  |            | 15.0.2-librca
               |     | 11.0.10.fx   | librca  |            | 11.0.10.fx-librca
               |     | 11.0.10      | librca  |            | 11.0.10-librca
               |     | 8.0.282.fx   | librca  |            | 8.0.282.fx-librca
               |     | 8.0.282      | librca  |            | 8.0.282-librca
 GraalVM       |     | 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.1.2.r11 | grl     |            | 20.3.1.2.r11-grl
               |     | 20.3.1.2.r8  | grl     |            | 20.3.1.2.r8-grl
               |     | 19.3.5.r11   | grl     |            | 19.3.5.r11-grl
               |     | 19.3.5.r8    | grl     |            | 19.3.5.r8-grl
               |     | 19.1.0       | grl     |            | 19.1.0-grl
 Java.net      |     | 17.ea.12     | open    |            | 17.ea.12-open
               |     | 17.ea.11     | open    |            | 17.ea.11-open
               |     | 17.ea.10     | open    |            | 17.ea.10-open
               |     | 17.ea.9      | open    |            | 17.ea.9-open
               |     | 17.ea.2.pma  | open    |            | 17.ea.2.pma-open
               |     | 17.ea.2.lm   | open    |            | 17.ea.2.lm-open
               |     | 16.ea.36     | open    |            | 16.ea.36-open
               |     | 15.0.2       | open    |            | 15.0.2-open
               |     | 11.0.10      | open    |            | 11.0.10-open
               |     | 11.0.2       | open    |            | 11.0.2-open
               |     | 8.0.282      | open    |            | 8.0.282-open
               |     | 8.0.265      | open    |            | 8.0.265-open
 Mandrel       |     | 21.0.0.0     | mandrel |            | 21.0.0.0-mandrel
               |     | 20.3.1.2     | mandrel |            | 20.3.1.2-mandrel
 SAP           |     | 15.0.2       | sapmchn |            | 15.0.2-sapmchn
               |     | 11.0.10      | sapmchn |            | 11.0.10-sapmchn
 TravaOpenJDK  |     | 11.0.9       | trava   |            | 11.0.9-trava
================================================================================
Use the Identifier for installation:

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

Java 6, 7, 8, 9, 11을 설치하겠다.

일단 목록을 보고 6, 8, 11버전을 설치한다.

sdk install java 6.0.119-zulu
sdk install java 8.0.282-open
sdk install java 11.0.10-open

c:\Users\<USER_NAME>\.sdkman/에 설치된다.

<USER_NAME>User라면 다음과 같은 경로에 설치된다.

  • c:\Users\User\.sdkman\candidates\java\11.0.10-open
  • c:\Users/User\.sdkman\candidates\java\6.0.119-zulu
  • c:\Users/User\.sdkman\candidates\java\8.0.282-open

불행하게도 7과 9가 SDKMAN에 받을 수 없다. 자바 JDK를 설치할 때는 행복한 적이 별로 없는 것 같다. 결국 7과 9는 수동으로 받아야 한다.

OpenJDK 버전과 Oracle 버전이 있다. OpenJDK버전은 아래 링크에서 받을 수 있다.

  • OpenJDK 7 - Accept를 누르고 Windows i586 Binary를 선택하자.
  • OpenJDK 9 - Accept를 누르고 Windows x64 Java Development Kit를 선택하자.

오라클 버전은 회원가입/로그인을 해야 받을 수 있다.

  • JDK 7 - Windows x64를 선택하자.
  • JDK 9 - Windows를 선택하자. (이제 32비트 버전은 없는 모양.)

나는 OpenJDK 7, 9를 받아서 다음과 같이 설치했다.

  • c:\opt\jdk7
  • c:\opt\jdk9

아무 디렉토리에 설치해도 상관없지만 opt 디렉토리 아래 설치했다. opt가 이런 용도로 유닉스에서 사용하는 디렉토리인데 그냥 윈도우에서 사용하고 있다.

내 아이디는 User이기 때문에 아래와 같은 것이고 실제 사용에서는 User를 다른 경로로 바꾸어야 한다.

JDK_16="c:\Users/User\.sdkman\candidates\java\6.0.119-zulu"
JDK_17="c:\opt\jdk7"
JDK_18="c:\Users/User\.sdkman\candidates\java\8.0.282-open"
JDK_9="c:\opt\jdk9"

JAVA_HOME은 11버전이나 8버전을 상황에 따라 설정한다.

JAVA_HOME="c:\Users\User\.sdkman\candidates\java\11.0.10-open"
JAVA_HOME="c:\Users\User\.sdkman\candidates\java\8.0.282-open"

시스템 속성 > 환경 변수에서 사용자 변수에 항목들을 설정하자. 찾기 어려우면 Windows 10 하단의 검색창에서 시스템 환경 변수 편집을 입력하고 시작하자.

덧붙임: Windows윈도우라고 표기했는데 실제 마이크로소프트도 굳이 한글로 쓰면 윈도우라고 답변을 했고 그들의 사이트에서 가끔 쓰는 한국어 표기이기 때문이다.