Installing Java OpenJDK on macOS Catalina
Posted on September 28, 2018 by Paul
Updated 15 October 2019
This is a short note about getting started with Java 11 LTS or Java 13 on macOS Catalina. As you probably know, starting with Java 11 there was a big change in the license under which the official Oracle JDK is provided. In short, you need to buy a license from Oracle if you want to use the official JDK in a commercial setting. As far as I know, using Oracle’s JDK on your private computer for testing and learning purposes is allowed.
That being said, for most users OpenJDK is the new JDK of choice, it is provided under an open source license and you don’t need to pay for using it.
There is also a video version of this tutorial:
At this time, Java 11, the long term release or LTS, of Java is no longer supported on the OpenJDK website. You can still get the archived version, but this is not recommended because it doesn’t include any new security patches. If you still need to use Java 11, use an alternative build like the one from AdoptOpenJDK. From the AdoptOpenJDK page you will download a pkg file that you can install on your macOS machine directly by double clicking on it.
After you’ve installed the AdoptOpenJDK pkg file, check if you can use it with:
This is what I see on my machine:
If you prefer to use the Java version provided by the OpenJDK website, you will need to use Java 13. Start by getting OpenJDK, chose the macOS version. Extract the archive by double clicking on the file or, assuming it is in your Downloads folder, write this in your Terminal:
Next step, is to move the extracted folder to a place where macOS searches for Java JDK:
Now, check if you’ve successfully installed the JDK with:
This is what I see on my machine:
Just to be sure that everything works, try to compile and run a simple program:
Save the above as HelloWorld.java and compile it with:
If you want to run the compiled version:
This is what I see on my machine:
Side note, you can also run directly the program, without the separate compilation step with:
but this is usually slower than compiling the code with javac and running the compiled code.