Skip to content

Latest commit

 

History

History
191 lines (140 loc) · 14 KB

README.md

File metadata and controls

191 lines (140 loc) · 14 KB

Update Watcher for AdoptOpenJDK *                  CodeFactor¹

GitHub license Maintenance Language GitHub release Github all releases FOSSA Status

Automatic update tool for Eclipse Temurin™, IBM® Semeru® Open Edition                                     ⬇ Download
and AdoptOpenJDK releases

ℹ The AdoptOpenJDK project is moving to the Eclipse Foundation

  • As you may know, AdoptOpenJDK project is moving to the Eclipse Foundation and rebranding:
    hotspot builds are now Eclipse Temurin™, while openj9 builds have become IBM® Semeru® Open Edition.
  • Version 2.0.5 of the updater currently still relies on api.adoptopenjdk.net.
    This is a 'hotfix' release, that brings support for Eclipse Temurin™ and IBM® Semeru® builds.
    All other changes, such as rebranding and/or API change, will (possibly) happen in the future.

Please check Eclipse Adoptium Slack for more information about the transition or Adoptium project in general.
Please do not hesitate to open an issue if you've encountered a problem with the updater or have a suggestion.

💡 Key ideas

  • The updater tries to list all AdoptOpenJDK installations on your machine - automatically
  • Every time it launches (i.e., on logon - if scheduled), it checks for updates in background
  • If there are new versions, you will be notified
  • For advanced users: It also provides a lot of manual controls - but they require some fine-tuning. Just read the tooltips, there are tons of them.

Update Dialog Config Dialog

When this app launches, it gets versions for your local installations of JDK/JRE (either from Windows Registry or from release file). Then it queries AdoptOpenJDK API to check if there are versions newer than yours. If there is, you will be notified. Otherwise app quits without showing any windows or alerts.

Configuration window will appear only on first run or if something goes wrong or if you have explicitly called it by the corresponding shortcut (or -config argument).

This app is designed to run on Windows startup. I recommend to turn on Check for AdoptOpenJDK updates on Logon setting in configuration. If you want another schedule, turn this on and press Edit task to configure it as desired.

🔃 New in v. 2.0.5:

  • bugfix: API semver parsing is more reliable now
  • Updated dependencies

Changelog:

New in v. 2.0.4

🔃 New in v. 2.0.4:

  • Fix for recent changes in Temurin that affected auto-detection:
    • Added "Eclipse Adoptium" registry root (thanks to @mcpower for #35 !)
    • Added more supported values to IMPLEMENTOR field in RELEASE file
  • Updated dependencies
New in v. 2.0.4

🔃 New in v. 2.0.3:

  • Adds support for Eclipse Temurin™ and IBM® Semeru® Open Edition builds, especially auto-detection (#28)
  • NEW! The updater detects whether the old installation was not removed during the update (can be caused by 4-th digit MSI updates, vendor change etc) and suggests to disable checking for updates for that entry. Fixes #9 :)
  • Makes skip release functionality more easy-to-find - this may be useful in case you encounter an update loop.
  • If MSI's installation process was cancelled or interrupted, the corresponding entry will remain in 'New versions available' window
  • Bugfix for version comparison algorithm (versions with the same MSI revisions could be compared incorrectly)
  • Release name and vendor are now available in the UI (update dialog)
  • Improved auto-detection algorithms
  • Updated dependencies
  • Added 'Open in Explorer' context menu: image
New in v. 2.0.2

🔃 New in v. 2.0.2:

  • UX: Easily override any auto-discovered instance with context menu. Disabling an auto-discovered instance is way simpler now.
  • Proxy support: AJUpdateWatcher now uses HTTP proxy - if it is configured in Windows Settings.
  • 'Immediate check' shortcut now performs check with GUI
  • Improved command line handling
  • Other minor changes and fixes, updated dependencies
New in v. 2.0.1

🔃 New in v. 2.0.1:

  • Added support for recently introduced changes in AdoptOpenJDK API and versioning scheme. This allows to receive patch and AdoptBuild updates for AdoptOpenJDK.
  • Switched to MSI for installers. No more false positives on VirusTotal!
  • Added support for post-install scripts/triggers (#5).
  • Redesigned self-update UI, added an option to view new release name (+ release notes on hover)
  • Added many new command line arguments
  • Added .cmd file to open Configuration for installer-free version (#4)
  • Fix for a bug during background check when autodiscovery was set to off
  • Other minor changes and fixes
New in v. 2.0.0

🔃 New in v. 2.0.0:

  • Support for multiple AdoptOpenJDK installations
  • Automatic discovery of installations via Windows Registry
  • Redesigned UI/UX
  • App warns if N last consecutive background update checks were unsuccessful (default N=10)
  • Limited support for Most recent/ Most recent LTS options
  • Other improvements, perfomance optimisations etc.

ℹ Requirements

Ironically, this tool is written in C# 6 + WPF, because I am not a Java developer xD

  • Windows 10 x64 (earlier versions are likely to work as well, but I did not test that. Icons may be missing in EOL versions of Windows (XP/7/8).
  • .NET Framework 4.7.2 (must be installed beforehand)
  • At least 1280x1024 or 1366x768 screen.

📩 Download

There's a built-in update mechanism.

👉 📥 Download version 2.0.5 👈 from here OR install using winget:

winget install ajupdatewatcher

If you find this app useful, stars are appreciated :) GitHub stars

🛠 Installation & configuration

  1. Run the downloaded installer and run the app (internet connection highly recommended on first run :)
  2. Turn on Check for AdoptOpenJDK updates on Logon. (If you want another schedule, turn this on and press Edit task to configure it as desired).
  3. Turn on automatic discovery of AdoptOpenJDK installations.

👉 Please note that only MSI-installed JDKs/JREs can be discovered automatically (because only MSIs add corresponding registry keys automatically). ZIP-extracted JDKs/JREs or very old MSIs cannot be autodiscovered.

That's all! First Run

If you don't have any JDKs/JREs installed, click on Download and install new instance from the web and the app will download and install them for you:

First Run Download and install new instance from the web

💡 Philosophy

  • This app is silent during background checks. If there is a problem connecting to the internet or AdoptOpenJDK API does not respond, it will be silent, unless N consecutive update checks were unsuccessful (default N=10)
  • However, it will not be silent in UI.
  • I'm not going to actively develop this app, it's mostly 'fire-and-forget' thing. However, some functionality may be added in future, there's a built-in update mechanism.

ℹ Disclaimer

The author does not provide any support related to AdoptOpenJDK / Eclipse Temurin™ / IBM® Semeru® Open Edition.

For support, please visit their corresponding websites: https://adoptopenjdk.net / https://adoptium.net / https://developer.ibm.com/languages/java/semeru-runtimes/

⚠ This (independent) software does not GUARANTEE that you will always get the lastest version of AdoptOpenJDK, Eclipse Temurin™ and/or IBM® Semeru® Open Edition.
Normally, everything works OK, and you get timely updates.
However, if something breaks or changes in AdoptOpenJDK API (api.adoptopenjdk.net), then you may or may not get the latest version.
No warranties provided (see LICENSE), use at your own risk.

THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

The author is not affiliated with or endorsed by AdoptOpenJDK project, Eclipse.org Foundation, Inc. and/or IBM Corporation.
'AdoptOpenJDK' part of the name is used on fair use conditions, as this app uses AdoptOpenJDK API for updating AdoptOpenJDK releases & its successors.

Java™ and OpenJDK™ are trademarks or registered trademarks of Oracle and/or its affiliates.
Eclipse™ and Eclipse Temurin™ are trademarks of Eclipse Foundation, Inc.
IBM® and IBM® Semeru® are registered trademarks of IBM Corporation in the United States, other countries, or both.
Other names may be trademarks of their respective owners.

⚖ License: MIT

FOSSA Status

💻 Codestyle

📝 Codestyle notes v.1.0: Please don't judge my coding style by this project, as I developed this app in less than a working day. It just works :)

v.2.0: The app was refactored. However, some codestyle issues still remain - for a single-person-maintained project, they are not a major issue. My top priority is app stability and robustness.

CodeFactor (¹) Please note that blank-line related rules such as The code must not contain multiple blank lines in a row., A closing curly bracket must not be preceded by a blank line., An opening curly bracket must not be followed by a blank line etc are disabled in CodeFactor.

🔕 Known not-a-bugs

  • JAVA_HOME value is updated when the app is launched (either in configuration mode or during background check). If you change JAVA_HOME value while running configuration screen, the value will not be updated in the app. However, you can close the configuration window safely: when the next background check occurs, actual value of JAVA_HOME at that time will be used
  • ⚠ Please keep in mind that if JAVA_HOME installation significantly changes (i.e., 8 → 11, or JRE → JDK), you should update API parameters manually (because the app cannot decide whether this is intended or not).
    You can use Detect (reset) API settings for selected button to do it.
  • If the configuration app continiously reminds you to turn on scheduled task (even if you opted out before), this happens because you have not either added some installations manually, or turned auto-discovery on. Once you set at least one of these, the app will consider itself as 'configured' and will remember your opt-out.
  • For manually added installations that were released prior to Sep 16 2020, it may be not always possible to detect build number. Thus you may miss an update, say, from 8.0.265+1 to 8.0.265+2 - but only for manually added installations (custom path or JAVA_HOME). It is highly recommended to use automatic discovery (which detects build numbers) for releases downloaded and installed prior to 16 September 2020.
  • Unfortunately, if you install a release with partially incorrect metadata, such as Eclipse Temurin™ 8.0.302+8.1, you may experience an "update loop". This is not a bug in Update Watcher, this is caused by a bug in release metadata.
    SOLUTION: "skip" the 8.0.302+8.1 release after you've installed it - so no further suggestions for updating to 8.0.302+8.1 will appear. Please see https://github.com/tushev/aojdk-updatewatcher/wiki/Skipping-releases on how to do it.