Search for available versions:

> brew search --formulae openjk
openjdk     openjdk@11  openjdk@17    openjdk@21  openjdk@8

(openjdk without @xx refers to the latest version, in this case 22)

Install a particular version

brew install openjdk@17

Brew installs packages into /usr/local/Cellar (Intel) or /opt/homebrew/Cellar (M1), but MacOS searches for Java under /Library/Java/JavaVirtualMachines/.

The required link is not created by brew (“keg-only”), so we need to add it:

sudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk

List installed Java versions by running

> /usr/libexec/java_home -V
17.0.5 (x86_64) "Eclipse Adoptium" - "OpenJDK 17.0.5" /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home

For convenience, set environment variables pointing to the different JAVA_HOME locations:

export JAVA_HOME_11=$(/usr/libexec/java_home -v "11")
export JAVA_HOME_17=$(/usr/libexec/java_home -v "17")
export JAVA_HOME=$JAVA_HOME_17