Overview
과거 포스트에서 이미 MacOS OpenJDK 설치 및 버전 관리에 대해 다뤄본 적이 있으나 asdf 를 이용해서 설치하는 방법을 안내하려고 합니다.
원래 Java 를 설치하려면 brew 를 사용하거나 직접 홈페이지에 들어가 JDK 파일을 다운받아야 합니다.
하지만 한 PC 에서 여러 Java 버전을 사용한다면 터미널에서 빌드할 때마다 Java 버전을 바꿔야하고 관리하기도 까다롭습니다.
jenv 라는 Java 버전 관리 툴이 존재하지만 jenv 는 Java 를 직접 설치할 수는 없습니다.
하지만 asdf 라는 툴을 사용하면 Java 의 설치/삭제를 간단하게 하고 버전 관리도 편하게 할 수 있습니다.
뿐만 아니라 asdf 는 Java 외의 여러 언어, 오픈소스 등의 버전도 관리할 수 있습니다.
1. asdf 설치
mysetting - asdf 을 참고하면 설치 및 사용방법 등을 알 수 있습니다.
# install dependencies (필요시)
$ brew install coreutils curl git
# install asdf
$ brew install asdf
# add to shell
$ echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ~/.zshrc
우선 asdf 를 설치합니다.
마지막의 add to shell 은 사용자마다 다릅니다.
저는 zsh 를 사용하고 있기 때문에 ~/.zshrc
에 추가했고 만약 bash 를 사용한다면 ~/.bash_profile
에 추가하면 됩니다.
2. Java Plugin 설치
$ asdf plugin add java
$ asdf plugin update java
설치를 위해선 플러그인을 먼저 설치해야 합니다.
3. Java 버전 리스트 확인
$ asdf list-all java
adoptopenjdk-11.0.15+10
adoptopenjdk-11.0.16+8
adoptopenjdk-11.0.16+101
adoptopenjdk-11.0.17+8
adoptopenjdk-17.0.0+35
...
..
.
zulu-jre-javafx-19.30.11
설치할 수 있는 Java 버전을 확인합니다.
저는 원래 AdoptOpenJDK 를 사용하였으나 deprecated 되었기 때문에 Adoptimu 에서 권장하는 Temurin 버전을 사용합니다.
(AdoptOpenJDK Blog - Good-bye AdoptOpenJDK. Hello Adoptium! 참고)
4. Java 설치
# 설치
$ asdf install java temurin-11.0.17+8
# 설치된 확인
$ asdf list java
temurin-11.0.17+8
Temurin 의 Java 11 버전 중 가장 최신 버전을 설치합니다.
설치 후에는 asdf list <언어>
명령어로 설치된 버전을 확인할 수 있으며 asdf list
만 입력하면 설치된 모든 오픈 소스의 모든 버전을 볼 수 있습니다.
5. 사용할 버전 지정
# global
$ asdf global java temurin-11.0.17+8
# local
$ asdf local java temurin-11.0.17+8
프로젝트 별로 설정하고 싶다면 local, 전역으로 설정하고 싶다면 global 을 사용해 지정합니다.
6. JAVA_HOME 설정하기
$ . ~/.asdf/plugins/java/set-java-home.zsh
halcyon/asdf-java - JAVA_HOME 를 참고해서 본인이 쓰는 shell 에 맞게 입력합니다.
7. Java 설치 완료
$ java -version
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment Temurin-11.0.17+8 (build 11.0.17+8)
OpenJDK 64-Bit Server VM Temurin-11.0.17+8 (build 11.0.17+8, mixed mode)
터미널에서 자바 버전을 확인해서 제대로 나온다면 설치 완료입니다.
Reference
'Language > Java' 카테고리의 다른 글
Java 의 Call by Value, Call by Reference (7) | 2022.01.31 |
---|---|
[Gradle] compile, implementation, api 차이점 (1) | 2021.10.20 |
Java Enum 2편 : 여러가지 활용법 (0) | 2021.10.06 |
Java Enum 1편 : Enum 기본적인 사용 (2) | 2021.09.15 |
Java 코드를 짤 때 주의할 점 몇가지 (0) | 2021.08.21 |