Pages

JDKMon

JDKMon is a little tool written in JavaFX which will help you to keep track on your installed OpenJDK installations.
It is created as a system tray application which you best run at startup and keep it running in the background. JDKMon will check for available updates every 3 hours.
Meaning to say it will check if there are updates available for the distributions it found.

JDKMon is NOT a replacement for installers like SDKMan, Chocolatey etc. because it will not install something but only give you the info of available updates and it let you download the update.

At the moment it supports the following distributions:
  • Adopt OpenJDK*
  • Adopt OpenJDK J9*
  • Bi Sheng
  • Corretto
  • Debian**
  • Dragonwell
  • GraalVM CE8, CE11, CE16 and CE17
  • JetBrains
  • Kona
  • Liberica
  • Liberica Native
  • Mandrel
  • Microsoft
  • OJDK Build
  • Open Logic
  • Oracle***
  • Oracle OpenJDK
  • RedHat**
  • SAP Machine
  • Semeru
  • Semeru Certified
  • Temurin
  • Trava
  • Zulu
  • Zulu Prime
*     not maintained any longer
**   pkgs not downloadable
*** pkgs partly not downloadable

In case a distribution was found but could not be identified, it will appear as "Unknown build of OpenJDK" in the main window.
If you stumble upon this case, please file an issue and mention the distribution that you are using. I will then try to add it to the list of supported distributions.

JDKMon is available for the following platforms:
  • MacOS x64 (Intel) / aarch64 (Apple M1)
  • Linux x64 (Intel, AMD) / aarch64 (ARM)
  • Windows x64 (Intel, AMD)
The installers and jar files can be downloaded from github releases.

Here are the latest available installers:








The following screenshot shows the main window of JDKMon:

MacOS and Linux

Windows

As you can see the application is also available in dark mode. Just keep in mind that it won't actively monitor dark/bright mode settings from the operating system but only once at startup.
On MacOS it will also use the accent colour you selected.
If you would like to make use of the dark mode on Linux systems you need to manually change the jdkmon.properties file and set
dark_mode=TRUE

Functionality

JDKMon will always show you the currently installed distributions with their version number on the left side of the screen.
In case JDKMon did find some udpates, it will indicate the update with an arrow, followed by the latest available version for the distribution and with tags for each available archive type (e.g. msi, zip, tar.gz etc.).
You can download the updated version by clicking on the tag with the archive type you would like to download.

After selecting the archive type you need to choose a folder for the download and then the download will start.
The progress of the download will be indicated by a progressbar on the bottom of the main window.
If you would always like to use the same download folder you can select "Remember download folder" from the menu items.

If there is another distribution with a more up to date version than the one you have installed a little white/black circle with an 'i' will appear besides the arrow. When you click on that circle JDKMon will show you an alternative distribution with a more recent version number.

Another thing you need to know is that if you have for example version 16.0.1 of a distribution installed and also 16.0.2 of the same distribution JDKMon won't indicate that there is an update available for 16.0.1 because it is already installed.

Setup

You need to tell JDKMon where to look for OpenJDK distributions on your local machine.
Depending on the operating system, JDKMon will try to find distributions in the following default folders:

MacOS: /System/Volumes/Data/Library/Java/JavaVirtualMachines/

Linux: /user/lib/jvm

Windows: C:\Program Files\Java

In addition JDKMon will check on MacOS and Linux if SDKMan is installed and will add it's folder for java installations (.sdkman/candidates/java) to the search path.
You can add more locations where JDKMon should look for distributions by selecting "Add JDK search path" from it's menu. In case you would like to reset the search path to the default, simply select "Default JDK search path".

But JDKMon not only keeps track of your installed OpenJDK distributions but also of installed OpenJFX installations. This means if you run a standard OpenJDK distribution in combination with a JavaFX SDK (which you can download here), JDKMon can track the JavaFX SDK for available updates.
The procedure is the same as for the OpenJDK distributions, you need to tell JDKMon where to look for the JavaFX SDK's by selecting the folder using "Add JavaFX search path" from the JDKMon menu. The default search path for JavaFX SDK's is your home folder.

The search paths for OpenJDK distributions and for JavaFX SDK's will be stored in a jdkmon.properties file in your home folder.

Vulnerabilities

Another thing that JDKMon offers is a check for known vulnerabilities of installed OpenJDK distributions. Meaning to say it won't scan the installed distributions for vulnerabilities but it will check the NVD database for versions of OpenJDK that have the same version number as the installed OpenJDK distributions on your system.
In case it finds something, it will indicate the vulnerable distribution with a yellow circle that contains an exclamation mark.

There is no guarantee that the indicated distribution (Zulu 16.0.1) is vulnerable but only that there are known vulnerabilities for OpenJDK with version 16.0.1.
When you click on the yellow circle the following window will pop up:
It shows two so called CVE (Common Vulnerability and Exposure) entries with their score and severity. Clicking on those CVE's will open a website with more details on that CVE in your default browser.

Downloads

In case you are simply looking for available distributions, JDKMon offers you the ability to check for available distributions and let you download the packages of your choice. If you click on the "Download a JDK" menu item the following window will pop up:

MacOS and Linux
Windows


Here you can drill down from a major version with it's update levels, distributions etc. to the package you would like to download.