Categories
Mac Mac setup Tech

Install and update Java JDK on macOS

The Java Development Kit (JDK) is essential for Java developers and contains the Java runtime environment as well as the Java compiler and other Java libraries. If you want to write some Java code on your Mac, you will need the JDK to run your code.

In macOS 10.6 Snow Leopard and below Java was pre-installed and shipped with your Mac. Since macOS 10.7 Lion (2011) it is not pre-installed anymore.

Install the JDK

The official JDK should be downloaded from the official Oracle Java website. Make sure to download the JDK, not the JRE (runtime environment). Before the download you have to accept the license agreement. The file is packaged in Mac’s DMG installation file format.

It is recommended to install the latest version and occasionally update the installed Java version. For an instruction on how to update Java see the sections below.

After the download, open the DMG file and run the PKG installer file that is contained. You will need administrator rights to proceed with the installation.

Check the JDK version

You can check the version of the Java you are running by opening a new Terminal and typing java -version. This will give you an output like the following:

$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

In my case, I am running an old JDK version which is Java 8 Update 131 (as indicated by 1.8.0_131). Alternatively, you can also run the executable /usr/libexec/java_home to determine your current Java version:

$ /usr/libexec/java_home   
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

If you provide the argument -V you are presented a list of all installed Java versions:

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
    13.0.2, x86_64:	"Java SE 13.0.2"	/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home
    1.8.0_131, x86_64:	"Java SE 8"	/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
    1.8.0_77, x86_64:	"Java SE 8"	/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

In my case, there are three versions installed. The current version is printed at the bottom.

Update the JDK

Updates are annoying, but have to be conducted anyway. To update the JDK, download the latest version of the JDK from the Oracle website as described above. Simply run the installer and the JDK version will be updated. The install should switch your Java version to the most recent version you just installed.

Set the JAVA_HOME variable

Setting the JAVA_HOME variable can be based on the output of the tool /usr/libexec/java_home that retrieves the installation path of your Java. To set it to the latest Java version use the command:

$ export JAVA_HOME=`/usr/libexec/java_home`

With argument -v you can retrieve the path of a specific version. You can just use part of the major version like 1.8 or 13:

$ /usr/libexec/java_home -v 1.8
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
$ /usr/libexec/java_home -v 13 
/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home

Given that you could also set version specific variables:

$ export java8=`/usr/libexec/java_home -v 1.8`
$ export java13=`/usr/libexec/java_home -v 13`

Leave a Reply