Use Multiple JVM versions on Mac OS and Linux


Download multiple Java versions and put them into /opt/ If you already have some JDK from ubuntu repo or etc not a big deal, just fix the paths bellow

  • Register them as alternatives

sudo update-alternatives --install /usr/bin/java java /opt/java-8-oracle/bin/java 1081

sudo update-alternatives --install /usr/bin/java java /opt/sap-machine-jdk-11.0.3/bin/java 1080

  • Edit your ~/.bashrc file

alias java11='sudo update-alternatives --set java /opt/sapmachine-jdk-11.0.3/bin/java;export JAVA_HOME=/opt/sapmachine-jdk-11.0.3/'

alias java8='sudo update-alternatives --set java /opt/java-8-oracle/bin/java;export JAVA_HOME=/usr/lib/java-8-oracle/'

  • SAVE and start a new bash terminal


java8 to use java8

java11 to use java11

the latest version you have set stays as system wide, but the JAVA_HOME is not :( you can put java8 or java11 as a last line in the bashrc but since it is sudo it will always require password when start and is not great ;(


  • Install homebrew, since it rox !

  • Install Oracle Java 8 or OpenJDK 8.

I recommend adoptopenjdk

brew tap adoptopenjdk/openjdk

brew search adoptopenjdk

brew cask install adoptopenjdk8

brew cask install adoptopenjdk11

On mac since it RULZ you have a java_home executable (that changes and fixes both your path and your JAVA_HOME) , so the .bashrc changes are easy !

  • Edit your ~/.bashrc file

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)

export JAVA_11_HOME=$(/usr/libexec/java_home -v11)

alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'


Note: the latest execution of java8 is to make it system wide by default

  • SAVE and start a new bash terminal


java8 to use java8

java11 to use java11


Use a normal OS or suffer :)

Share this:


Superhero with Java powers && Gamer && (Sci-Fi & Star Wars geek) && Bulgarian Java User Group Leader && nerds2nerds podcaster && (link: guy ? this : null