{"id":19015312,"url":"https://github.com/hansolo/jdkmon","last_synced_at":"2025-05-16T13:04:59.450Z","repository":{"id":39748038,"uuid":"352564172","full_name":"HanSolo/JDKMon","owner":"HanSolo","description":"A little tool written in JavaFX that monitors your installed JDK's and inform you about updates","archived":false,"fork":false,"pushed_at":"2024-11-29T08:41:29.000Z","size":15826,"stargazers_count":314,"open_issues_count":9,"forks_count":22,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-05-03T04:33:38.532Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HanSolo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-29T08:08:16.000Z","updated_at":"2025-02-26T07:52:01.000Z","dependencies_parsed_at":"2023-09-25T17:33:24.708Z","dependency_job_id":"d61bd08e-331b-4598-8be7-2ec908c1a920","html_url":"https://github.com/HanSolo/JDKMon","commit_stats":{"total_commits":417,"total_committers":4,"mean_commits":104.25,"dds":"0.023980815347721784","last_synced_commit":"091999f92151868a6de9f524603bb9518e179692"},"previous_names":[],"tags_count":113,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HanSolo%2FJDKMon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HanSolo%2FJDKMon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HanSolo%2FJDKMon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HanSolo%2FJDKMon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HanSolo","download_url":"https://codeload.github.com/HanSolo/JDKMon/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254535827,"owners_count":22087399,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T19:36:43.262Z","updated_at":"2025-05-16T13:04:59.404Z","avatar_url":"https://github.com/HanSolo.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JDKMon \n\n[![GitHub stars](https://badgen.net/github/stars/HanSolo/JDKMon)](https://GitHub.com/HanSolo/JDKMon/stargazers/)\n\n[![Github all releases](https://img.shields.io/github/downloads/HanSolo/JDKMon/total.svg)](https://GitHub.com/HanSolo/JDKMon/releases/)\n\n[![JFXCentral](https://img.shields.io/badge/Find_me_on-JFXCentral-blue?logo=googlechrome\u0026logoColor=white)](https://www.jfx-central.com/downloads/jdkmon)\n\n\n\u003cbr\u003e\n\n[JDKMon Home](https://harmoniccode.blogspot.com/p/jdkmon.html)\n\n\u003cbr\u003e\nJDKMon is a little tool written in JavaFX that tries to detect all JDK's installed\non your machine and will inform you about new updates and vulnerabilities of each OpenJDK distribution found.\nIn addition JDKMon is also able to monitor JavaFX SDK versions that are installed on your\nmachine.\n\n(On MacOS you need at least version 11.0 to run JDKMon)\n\nAt the moment the following distributions will be identified:\n- AdoptOpenJDK\n- AdoptOpenJDK J9\n- Bi Sheng\n- Corretto\n- Debian (pkgs not downloadable)\n- Dragonwell\n- Gluon GraalVM\n- GraalVM CE8, CE11, CE16, CE17, CE19, CE20\n- GraalVM Community\n- GraalVM\n- JetBrains\n- Kona\n- Liberica\n- Liberica Native\n- Mandrel\n- Microsoft\n- OJDK Build\n- Open Logic\n- Oracle (not all pkgs downloadable)\n- Oracle OpenJDK\n- RedHat (pkgs not downloadable)\n- SAP Machine\n- Semeru\n- Semeru Certified\n- Temurin\n- Trava\n- Zulu\n- Zulu Prime\n\n\nIn case the distribution found was not identified it will be mentioned in the main window as\n\"Unknown build of OpenJDK\". If you stumble upon this case, please file an [issue](https://github.com/HanSolo/JDKMon/issues) and mention\nthe distribution incl. version that you are using.\n\nJDKMon can be build for: \n- Windows x64\n- MacOS x64\n- MacOS aarch64\n- Linux x64\n- Linux aarch64\n\nYou can always check if you have the latest version install by taking a look at the About window.\nThis can be opened by selecting ```About``` from the menu. If there is a new version available\nyou will find a link in the About window that will open the page with the latest release in your default\nbrowser.\n\n![About](https://i.ibb.co/QNqBLcG/About.png)\n\nYou could also always get the latest version [here](https://github.com/HanSolo/JDKMon/releases).\n\nDepending on the operating system it will try to find the JDK's\nin the following folders:\n\nMacOS: `/System/Volumes/Data/Library/Java/JavaVirtualMachines/`\n\nWindows: `C:\\Program Files\\Java\\`\n\nLinux: `/usr/lib/jvm`(FXTrayIcon only supports a few linux distros) \n\nYou can change the folders JDKMon is scanning for installed JDK's by selecting\nthe `\"Add JDK search path\"` menu entry. The selected path will be added to the list of \nfolders stored in the jdkmon.properties file in your user home folder.\nJDKMon will scan all given folders for installed JDK's. \n\nIf you would like to reset the folders that should be scanned to the default, simply\nselect `\"Default JDK search path\"` in the menu.\n\nYou can also change the folders JDKMon is scanning for JavaFX SDK's by selecting\nthe `\"Add JavaFX search path\"` menu entry. The selected path will be added to the list of\nfolders stored in the jdkmon.properties file in your user home folder.\nYou just need to add the folder than contains all your `javafx-sdk-mm.ii.uu` folders.\n\nIf you would like to reset the folders that should be scanned for JavaFX SDK's to the default,\nsimply select `\"Default JavaFX search path\"`. It will be reset to the your home folder.\n\nYou can search and download for a JDK from different distributions in the dialog that opens when\nyou select `\"Download a JDK\"` from the menu.\n\nThe application will stay in the system tray with an icon. If you click the icon\na menu will appear where you can select\n\n\n`JDK Main: The main window`\n\n`Rescan: Will rescan for installed JDK's and check for updates`\n\n`Add search path: Will open the directory chooser to add a path to the search paths`\n\n`Default search path: Will reset the search path to the platform dependent default`\n\n`Remember download folder: When remember download folder is active you don't have to select a download folder everytime`\n\n`Download a JDK: Opens a dialog where you can search/download a JDK from different distributions`\n\n`Exit: Exit the application`\n`\n\n\u003cb\u003eATTENTION:\u003c/b\u003e\u003cbr\u003e\nWhen running the application via `java -jar` on Linux you might have to\nadd `-Djdk.gtk.version=2` to make it work correctly e.g. `java -Djdk.gtk.version=3 -jar JDKMon-linux-22.0.0.jar`\n\nOn Mac and Windows the dark mode will be detected automatically and the user interface will\nadjust it's design to either dark or light mode. On Linux you can change the variable \"dark_mode\" in the\njdkmon.properties file (in your user folder) to \"TRUE\" to see the application in dark mode.\nThe application will only check for dark/light mode during startup and won't change when it is running.\n\nThe main window will show you all JDK's found by JDKMon and if there is an\nupdate available it will show you the archive types of the available updates.\nIn the image below you can see that there is an update for Zulu(FX) available\nand that you can download it as a tar.gz file.\nTo download an update just click on the archive type tag and choose a folder\nwhere the download should be stored.\n\nIf an update is available and there are release details available, a little blue dot with a question mark\nwill appear at the end of the packages list. When clicking on the dot the default browser will open with\nthe release details over at [foojay.io](https://foojay.io)\n\nJDKMon will not only help you to keep your installed OpenJDK distributions up to date but will also check\nthe NVD (National Vulnerability Database) for known vulnerabilities (CVE - Common Vulnerability and Exposure) related to their version number. If you have for example installed\nan OpenJDK distribution with the version 11.0.13, JDKMon will check the NVD for known vulnerabilities of OpenJDK\nwith the version number 11.0.13. In case JDKMon will find vulnerabilities, it will indicate this with a red\nsquare with an exclamation mark behind the version number. Meaning to say if you have for example Zulu 11.0.13 \nand Liberica 11.0.13 installed ony your machine, JDKMon will show you the vulnerabilties, it found for\nOpenJDK 11.0.13 for both distributions. So there is no guarantee that your installed distribution is really\naffected by the CVE's found in the NVD but you at least get the info that there are vulnerabilities for 11.0.13.\n\n![JDKMon](https://i.ibb.co/8MB9Lmx/JDKMon.png)\n\nIf you hover over a distribution, a tooltip will pop up that shows you the path where the distribution is installed,\nthe number of modules the distribution comes with if it is modular and the size of the folder it is installed in.\n\nWhen you click on the yellow circle a window will open which shows the CVE's found. \nYou can click on each CVE to open it in a browser with more detailled information.\n\n![Vulnerabilities](https://i.ibb.co/M50z992/vulnerabilities.png)\n\nIn the menu you will find an entry named \"JEP's, JSR's, Projects\". This will open a dialog with 3 drop down boxes\nas you can see in the following image.\n\n![JepJsrProject](https://i.ibb.co/BPZwX98/Xnip2023-11-06-12-42-15.png)\n\nWhen selecting one item of those boxes, it will open the related JEP, JSR or project in your\ndefault browser so that you can read more about it.\n\n\n#### User Interface\nHow it looks on MacOS and Linux (light/dark mode):\n![Updates](https://i.ibb.co/HttqQ3n/update-mac-linux.png)\n\n![Download](https://i.ibb.co/DbYK1F3/download-mac-linux.png)\n\nHow it looks on Windows (light/dark mode):\n\n![Updates](https://i.ibb.co/w6d9bV4/update-win.png)\n\n![Download](https://i.ibb.co/HF5F8ff/download-win.png)\n\n\n### Additional properties\nIn your user home folder (e.g. /Users/YOUR_USERNAME or /home/YOUR_USERNAME) you will find\na file named ```jdkmon.properties```. This file contains the following settings:\n```\nsearchpath=THE PATHS THAT WILL SCANNED FOR JDK'S (default depends on operating system)\nremember_download_folder=TRUE/FALSE (default is FALSE)\ndownload_folder=THE FOLDER WHERE DOWNLOADS WILL BE STORED (default is empty)\ndark_mode=TRUE/FALSE (default is FALSE)\njavafx_searchpath=PATH THAT WILL BE SCANNED FOR JAVAFX SDK'S (default is the user home folder)\nfeatures=loom,panama,metropolis,valhalla,lanai,kona_fiber (list of features to look for) EXPERIMENTAL!\nautoextract=TRUE/FALSE Will directly extract downloaded JDK's (default is FALSE) EXPERIMENTAL!\nshow_unknown_builds=TRUE/FALSE Will show unknown builds of OpenJDK (default is FALSE) EXPERIMENTAL!\n```\n\n### Switch JDK script\nSince release 17.0.67 of JDKMon, it will create a script in your user home folder called\n\n- switch-jdk.sh (Linux and Mac)\n- switch-jdk.bat (Windows)\n\nWith this script you can switch to a specific JDK that was found by JDKMon. \nYou can call the script with the -h parameter to get more help as follows:\n\n```\n\u003e: ./switch-jdk.sh -h\n. ./switch-jdk.sh JDK_NAME\n\nJDK_NAME can be one of the following:\nzulu_17_0_7_0\nzulu_20_0_1_0\nzulu_8_0_372_0\ngluon_graalvm_22_1_0_1\nzulu_21_0_0_0\ngraalvm_ce17_22_3_1_0\nzulu_11_0_19_0\n\n\u003e: . ./switch-jdk.sh zulu_11_0_19_0\nSwitched to zulu 11.0.19\nopenjdk version \"11.0.19\" 2023-04-18 LTS\nOpenJDK Runtime Environment Zulu11.64+19-CA (build 11.0.19+7-LTS)\nOpenJDK 64-Bit Server VM Zulu11.64+19-CA (build 11.0.19+7-LTS, mixed mode)\n\n\u003e: java -version\nopenjdk version \"11.0.19\" 2023-04-18 LTS\nOpenJDK Runtime Environment Zulu11.64+19-CA (build 11.0.19+7-LTS)\nOpenJDK 64-Bit Server VM Zulu11.64+19-CA (build 11.0.19+7-LTS, mixed mode)\n```\n\nThis script enables you to switch to a JDK of your choice for the current shell session.\n\n\n### Installation\n#### Linux\nInstall the deb pkg via\n```sudo dpkg -i jdkmon_22.0.0-1_amd64.deb```\n\n#### Windows\nMake sure that you unblocked the msi package and set the rights correctly before you\nexecute the msi installer\n\n#### MacOS\nInstall the pkg and make sure it is not unblocked because it comes from an unknown source.\n\n### Installation problems\n#### Linux\nMake sure that you have the following programs installed before you execute build_appLinux.sh:\n- binutils ```sudo apt install binutils```\n- fakeroot ```sudo apt install fakeroot```\n- rpm ```sudo apt install rpm```\n\n### Problems opening CVE links\n#### Linux\nMake sure you have the xdg-open tool installed (it is part of the xdg-utils package).\n- xdg-utils ```sudo apt install xdg-utils```\n\n### No CVEs found\nIn case the cve files (in your home folder) are empty,\ndelete the empty file and restart JDKMon. After the restart the file should be filled with data again.\n- cvedb.json\n- graalvm_cvedb.json\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhansolo%2Fjdkmon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhansolo%2Fjdkmon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhansolo%2Fjdkmon/lists"}