With the new Java Release Cycle you may need to have Java 8 (previous LTS) and Java 11 (current LTS) installed simultaneously and switch back and forth between them.
If you’re using Linux or MacOs then you can use https://sdkman.io/ . It is a tool to maintain multiple SDK-s locally without conflicts. Besides Java you can use it for gradle, maven, groovy etc.
$ curl -s "https://get.sdkman.io" | bash
List versions of Java
$ sdk list java ================================================================================ Available Java Versions ================================================================================ Vendor | Use | Version | Dist | Status | Identifier -------------------------------------------------------------------------------- AdoptOpenJDK | | 12.0.1.j9 | adpt | | 12.0.1.j9-adpt | | 12.0.1.hs | adpt | | 12.0.1.hs-adpt | | 11.0.4.j9 | adpt | | 11.0.4.j9-adpt | | 11.0.4.hs | adpt | | 11.0.4.hs-adpt | | 8.0.222.j9 | adpt | | 8.0.222.j9-adpt | | 8.0.222.hs | adpt | | 8.0.222.hs-adpt Amazon | | 11.0.4 | amzn | | 11.0.4-amzn | | 8.0.222 | amzn | | 8.0.222-amzn | | 8.0.202 | amzn | | 8.0.202-amzn Azul Zulu | | 13.0.0 | zulu | | 13.0.0-zulu | | 12.0.2 | zulu | | 12.0.2-zulu | | 11.0.4 | zulu | | 11.0.4-zulu | | 10.0.2 | zulu | | 10.0.2-zulu | | 9.0.7 | zulu | | 9.0.7-zulu | | 8.0.222 | zulu | | 8.0.222-zulu | | 8.0.202 | zulu | | 8.0.202-zulu | | 7.0.232 | zulu | | 7.0.232-zulu | | 7.0.181 | zulu | | 7.0.181-zulu Azul ZuluFX | | 11.0.2 | zulufx | | 11.0.2-zulufx | | 8.0.202 | zulufx | | 8.0.202-zulufx BellSoft | | 13.0.0 | librca | | 13.0.0-librca | | 12.0.2 | librca | | 12.0.2-librca | | 11.0.4 | librca | | 11.0.4-librca | | 8.0.222 | librca | | 8.0.222-librca GraalVM | | 19.2.0 | grl | | 19.2.0-grl | | 126.96.36.199 | grl | | 188.8.131.52-grl | | 19.1.1 | grl | | 19.1.1-grl | | 19.0.2 | grl | | 19.0.2-grl | | 1.0.0 | grl | | 1.0.0-rc-16-grl Java.net | | 14.ea.15 | open | | 14.ea.15-open | | 13.0.0 | open | | 13.0.0-open | | 12.0.2 | open | | 12.0.2-open | | 11.0.2 | open | | 11.0.2-open | | 10.0.2 | open | | 10.0.2-open | | 9.0.4 | open | | 9.0.4-open SAP | | 12.0.2 | sapmchn | | 12.0.2-sapmchn | | 11.0.4 | sapmchn | | 11.0.4-sapmchn ================================================================================ Use the Identifier for installation: $ sdk install java 11.0.3.hs-adpt ================================================================================
Install Java (JDK) versions
For JDK there are now multiple vendors. So besides the version you need to specify a vendor as well. The final version looks like
The general rule now is to use
AdoptOpenJDK since it has as for now the best community support. There is also incoming
GraalVM with promises to make Java extremely fast. It has its own versioning system not related to normal Java-s
AdoptOpenJDK has builds with two virtual machines: HotSpot (classic) and j9 (modern faster). You might want to have both in case you have problems with one of them.
$ sdk install java 8.0.222.hs-adpt $ sdk install java 8.0.222.j9-adpt $ sdk install java 11.0.4-sapmchn
You will be asked if you want to set the installed versions as default Java. You can choose to do it or not to do it. I will show you how to change it.
Switch between versions
Switch java version temporarily only for this shell:
$ sdk use java 11.0.4-sapmchn Using java version 11.0.4-sapmchn in this shell. $ sdk current java Using java version 11.0.4-sapmchn $ java -version openjdk version "11.0.4" 2019-07-17 LTS OpenJDK Runtime Environment (build 11.0.4+11-LTS-sapmachine) OpenJDK 64-Bit Server VM (build 11.0.4+11-LTS-sapmachine, mixed mode
Switch java version globally for this and all future shells:
$ sdk default java 11.0.4.hs-adpt Default java version set to 11.0.4.hs-adpt $ sdk current java Using java version 11.0.4.hs-adpt $ java -version openjdk version "11.0.4" 2019-07-16 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.4+11, mixed mode)
Where are the installed files?
Check the directory
You can use it in the IntelliJ SDKs configuration
Is there an auto-update?
No, but you can do it manually.
$ sdk upgrade java 11.0.4-sapmchn java is up-to-date
What about other SDKs like groovy, scala, kotlin etc?
You can list all SDKs supported by sdkman:
$ sdk list
For other SDKs the process is the same except you normally have one vendor and only need to tell which version you want.