Homebrew 로 설치 가능하고, Python 의 pyenv처럼 Java 버전을 관리할 수 있다
jenv 설치:
brew install jenv
~/.zshrc 또는 ~/.profile 에 아래처럼 추가
# Java 버전 전환 alias
alias use_java8='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8); export PATH=$JAVA_HOME/bin:$PATH'
alias use_java11='export JAVA_HOME=$(/usr/libexec/java_home -v 11); export PATH=$JAVA_HOME/bin:$PATH'
alias use_java19='export JAVA_HOME=$(/usr/libexec/java_home -v 19); export PATH=$JAVA_HOME/bin:$PATH'
alias use_java21='export JAVA_HOME=$(/usr/libexec/java_home -v 21); export PATH=$JAVA_HOME/bin:$PATH'
use_java11 입력하면 바로 JDK 11로 전환된다.

PATH 등록 (~/.zshrc 또는 ~/.profile 에 아래처럼 추가):
# >>> jenv initialization >>>
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
# <<< jenv initialization <<<

Java 버전 등록:
jenv add /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home
jenv add /Users/jun/Library/Java/JavaVirtualMachines/openjdk-21.0.1/Contents/Home

등록 확인:
jenv versions

프로젝트별/글로벌 설정:
jenv global 11.0 # 시스템 전체 기본을 11로
jenv local 1.8 # 현재 디렉토리만 8로
jenv shell 11.0 # 현재 터미널 세션만 11로
jenv global 11.0 vs 11.0.28?
명령어 의미 동작 jenv global 11.0Major=11, Minor=0 으로 시작하는 버전 중 최신 Patch 선택 11.0.28 이 설치돼 있다면 자동으로 이 버전을 사용 jenv global 11.0.28Major=11, Minor=0, Patch=28 정확히 지정 다른 11.x 버전이 있어도 11.0.28만 사용 즉, 11.0 은 "11.x 계열 최신"을 가리키고, 11.0.28 은 특정 패치 버전을 고정
- 일반 개발 / 프로젝트 호환성 중요할 때 → 11.0.28 처럼 특정 버전 고정
- 최신 보안 패치 자동 적용 원할 때 → 11.0 처럼 Major.Minor 수준 지정