In this article, see how to manage multiple JDKs on Mac OS, Linux and Windows WSL2.
Join the DZone community and get the full member experience.
Mac OS X Port Project. The goal of this Project is to produce a high-quality, open source version of JDK 7 for the Mac. The final release has the following goals: Pass all appropriate certification tests for Java SE 7; Include a complete, native Cocoa-based UI Toolkit; Provide excellent performance; This Project is sponsored by the Porters.
Join For FreeIf you, like me, have to deal with multiple projects at different stages, like one being legacy, another one being the latest, and another one being a library or tool consumed by users also using different versions of Java, then you have a small Multiple JDK problem, assuming you only care for one vendor of JDK; otherwise, you have a Matrix JDK problem.
Installing, managing, and switching between JDKs in your computer is no easy task these days where the majority of developers are still on Java 8, while a good chunk is now moving to Java 11. And there are many ways to do that.
- If you prefer to continue using Apple's Java 6 plug-in, follow the steps provided in the Java for OS X 2014-001 topic at the Apple Developer site. After installing Java for macOS 2012-006, can I continue to use Apple's Java 6 alongside the macOS JDK or JRE for Java 10?
- 'JDK Installation Instructions' 'Determining the Default Version of the JDK' 'Uninstalling the JDK' See 'JDK 8 and JRE 8 Installation Start Here' for general information about installing JDK 8 and JRE 8. See 'OS X Platform Install FAQ' for general information about installing JDK 8 on OS X.
- Jdk 7 free download - OpenJDK 7 for OS X Lion, Easy Duplicate Finder 7 Mac, Adobe Flash Player, and many more programs.
- Jdk free download - OpenJDK 7 for OS X Lion, and many more programs. Jdk free download - OpenJDK 7 for OS X Lion, and many more programs.
This article is to help you through that process.
The Manual Way
You can go after your JDK vendor-of-choice website and download binaries, and install them all manually (or even better just extract them to some folder like $user/jdks and be done with it. But then you have to always verify and update JAVA_HOME to point to the one you really want for this and for that project.
Solutions for this would include using bash scripts, bash functions, and so on. The main problem? You may simply forget to call the script/function, and be hit with some UnsupportedClassVersionError to then only realize what's wrong.
I'll leave this to you to dig the internet for solutions, if you prefer the manual way. For advanced users, it may be the best choice. But I prefer some tooling for this. So, let's dive in:
The Better Way
In my opinion, the ideal way is by combining two open source tools that exist already for quite some time and you may already know at least one of them. What you don't know is that you can combine them.
Let's see how we get them to play ball together…
Install Multiple JDKs
Once you have SDKMAN! installed and configured, you will type:
Once you find the vendor and version you want to install, you will type:
'>Let’s add four JDKs, two recent versions of Oracle OpenJDK and two LTS versions by AdoptOpenJDK.
Whenever asked by SDKMAN!, do not set any of them as the default.
- AdoptOpenJDK build of OpenJDK 8u252 — LTS
- AdoptOpenJDK build of OpenJDK 11.0.7 — LTS
- Oracle OpenJDK 14 — Latest GA
- Oracle OpenJDK 15 — Early Access Builds of next release
These four versions should cover you well for legacy projects still stick to Java 8, but also put you in a nice place for modern projects with Java 11 as well as the possibility to experiment new features and enhancements on Java 14 and Java 15.
Alright, you’ve got 4 JDKs installed locally with SDKMAN! —I think this tool is really great for this use case, and I hope you enjoyed it too.
All JDKs installed can be found inside the following directory:
Now, if you do want to just use one JDK at all times and not have to switch back and forth, you can use SDKMAN! to set your JDK of choice:
You can stop here and just use SDKMAN! but you will eventually forget to switch back based on the project you are working on, just like by using some manual shell script. And because of this, I prefer to auto-switch.
Manage Multiple JDKs With jEnv
While SDKMAN! can install and manage JDKs, the tool doesn't do a great job at auto-switching between versions for you automatically as you move from project A to project B.
For that, you will want jEnv.
Once you have it installed and configured, and multiple JDKs, whether with SDKMAN! or some other way, you will need to add those JDKs to jEnv. Here’s how:
Repeat the command jenv add for all other 3 versions.
jEnv has excellent features especially for those constantly using terminals. It will allow you to:
- Set a Java version for your overall system.
- Set a Java version for the current directory/project you are in.
- Set a Java version for the current shell.
jEnv uses shim binaries and also manipulates the JAVA_HOME environment variable for you automatically. So, once you have these settings, jEnv will switch to whatever version makes most sense, based on the priority above and based on where you are. Neat! It has other nice features, so check the website for more documentation.
Jdk For Mac Os X
Auto-Switch Between Multiple JDKs
Now you have Java 8, 11, 14 and 15-EA available. So how do you switch back and forth? Let's set versions and switch back and forth.
First you set a Java version to be global default. I like to use an Early Access as my system default. Whenever I hit a new project, I will automatically attempt to work with an upcoming release, and this could help me identify potential problems I can then report back to the OpenJDK project. But you do you…
With this setting, whenever you hit any folder on your terminal and you type java -version you will get OpenJDK 15 EA.
If you do have a project that must use Java 8, then you navigate to that project folder, and you type:
This will create a file called .java-version with the following content:
This file is what tells jEnv which JDK to use for when the terminal is on this folder.
Finally, if you are on some location and you want to temporarily switch to a specific JDK version, then you use jenv shell.
Mac Os Jdk Install
Here's a demonstration that can explain better all these concepts and how the Auto-Switch works.
I hope you enjoyed the read, and if you have questions, just reach out to me on Twitter.
Java Jdk For Mac Os
java,tutorial,jdk,multiple jdks,sdkman,jenv
Jdk Download For Mac Os X 10.6.8
Published at DZone with permission of Bruno Borges. See the original article here.
Opinions expressed by DZone contributors are their own.
The following are the system requirements for installing the JDK and the JRE on macOS:
- Any Intel-based computer running macOS.
- Administrator privileges.You cannot install Java for a single user. Installing the JDK and JRE on macOS is performed on a systemwide basis for all users. Administrator privileges are required to install the JDK and JRE on macOS.
- When you install the JDK, it also installs the JRE. However, the system will not replace the current JRE with a lower version.To determine the current JRE version installed on your system, see Determining the JRE Version Installed on macOS. To install an earlier version of the JRE, you must first uninstall the current version. See Uninstalling the JRE on macOS.
- When you install the JRE, you can install only one JRE on your system at a time. The system will not install a JRE that has an earlier version than the current version.To determine the current JRE version installed on your system, see Determining the JRE Version Installed on macOS. To install an earlier version of the JRE, you must first uninstall the current version. See Uninstalling the JRE on macOS.Note:Installing a JRE from Oracle will not update
java -version
symlinks or addjava
to your path. To do this, you must install the JDK.