Use Multiple JVM versions on Mac OS and Linux

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

execute

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 ;(

Mac

  • 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’

java8

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

  • SAVE and start a new bash terminal

execute

java8 to use java8

java11 to use java11

Windows

Use a normal OS or suffer 🙂