JetBrains released a JDK 25 version of it's runtime today. It's marked "pre-release" but that doesn't scare me much since I only use it locally during development.
Quick testing showed it seemingly works fine with WO on Eclipse 2025-09 with the current hotswap-agent v2.0.1, so I changed all my own apps and libraries from targeting JDK 21 to JDK 25. Since my build and deployment environments are already running JDK 25, each project's "migration process" consisted of updating the JDK version in the pom.xml and doing a commit/push/build/deploy. Easy upgrade, everything works like a charm and I'm a happy man. Now giving it a few days in testing in my own projects before updating client projects.
I haven't migrated any of my public libraries or frameworks yet but probably will in the next few days. I'll be keeping Parsley and Vermilingua on JDK 21 for a while though, since they're used by others and I'm aware not everyone is in quite the same hurry to upgrade as I am.
For your WO application to work with JDK 25, you must use the workaround for the JDK's removal of GetPropertyAction or use wonder-slim which includes it. See previous article on JDK 25 for more info.
hotswap-agentxattr dance/Library/JavaVirtualMachines (or wherever you keep your JVMs)% curl -LO https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-25-osx-aarch64-b176.4.tar.gz
% curl -LO https://github.com/HotswapProjects/HotswapAgent/releases/download/RELEASE-2.0.1/hotswap-agent-2.0.1.jar
% tar -xzf jbrsdk-25-osx-aarch64-b176.4.tar.gz
% mkdir jbrsdk-25-osx-aarch64-b176.4/Contents/Home/lib/hotswap
% mv hotswap-agent-2.0.1.jar jbrsdk-25-osx-aarch64-b176.4/Contents/Home/lib/hotswap/hotswap-agent.jar
% sudo xattr -r -d com.apple.quarantine jbrsdk-25-osx-aarch64-b176.4
% sudo mv jbrsdk-25-osx-aarch64-b176.4 /Library/Java/JavaVirtualMachines
Then add the JDK in Eclipse, which I assume you know how to do. And don't forget to configure the JDK with default arguments for WO and DCEVM/hotswap-agent.
Note that the set of packages you need to open may differ from these, based on which classes you actually use. But this basic set has served me well.
-XX:+AllowEnhancedClassRedefinition
-XX:HotswapAgent=fatjar
--add-opens java.base/java.time=ALL-UNNAMED
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
| 🤸♀️ wonder-slim | Simplify class structure for ERExtensions' dynamic element patches | Jun 27 |
| 💋 parslips | Move Inline Binding Shortcuts preferences to the Zombies category | Jun 27 |
| 💋 parslips | Reload tag aliases when a parsley-tag-aliases.properties changes | Jun 27 |
| 🌿 parsley | Add a note on parsley directly registering wonder elements | Jun 27 |
| 🌿 parsley | Removed the "not in 5.4" tag comments. No one cares. | Jun 27 |
| 💋 parslips | Bump wonder-slim project template to 8.0.3 | Jun 26 |
| 🤸♀️ wonder-slim | Update parsley v1.6.0 -> v1.6.1-SNAPSHOT | Jun 26 |
| ⚙️️ wonder-slim-deployment | Update wonder-slim v8.0.2 -> v8.0.3 | Jun 26 |
| 👨⚕️ examiner | Update wonder-slim v8.0.2 -> v8.0.3, parsley v1.5.0 -> v1.6.0 | Jun 26 |
| 💋 parslips | Add changelog entry for the shared tag registry | Jun 26 |
| 🤸♀️ wonder-slim | 8.0.3 | Jun 26 |
| 🌿 parsley | 1.6.0 | Jun 26 |
| 🌿 parsley | 1.5.0 | Jun 18 |
| 🤸♀️ wonder-slim | 8.0.2 | Jun 18 |
| 🦡 vermilingua | 1.1.5 | Jun 15 |
| 🤸♀️ wonder-slim | 8.0.1 | Jun 1 |
| 🌿 parsley | 1.4.2 | Jun 1 |
| 🦡 vermilingua | 1.1.4 | Apr 24 |
| 🚀 ng-objects | 0.1.1 | Apr 22 |
| 🦡 vermilingua | 1.1.3 | Apr 15 |
| 🌿 parsley | Switch components bypass tag-alias resolution (runtime dynamicElementWithName) | Jun 27 |
| 🧩 apiext-format | Root <wo class> uses the simple class name (Obj-C relic) — reconcile with FQN class references | Jun 25 |
| 🧩 apiext-format | Value sets — allowed values for a binding (literal enums and dynamic sources) | Jun 25 |
| 🧩 apiext-format | Declare the primary HTML element an element renders as | Jun 25 |
| 🧩 apiext-format | Review, document, and possibly redesign the binding-validation syntax | Jun 25 |
| 🧩 apiext-format | Element/component use scope (access control / visibility) | Jun 25 |
| 🤸♀️ wonder-slim | bfcache: stale page on back/forward after an ajax update | Jun 22 |
| 🦡 vermilingua | Write a file to the WOA containing some info about the build | Jun 22 |
| 🤖 modulo | Audit and complete the set of adaptor headers modulo injects | Jun 19 |
| 🦡 vermilingua | Non-clean rebuilds leave deleted/renamed resources in the .woa | Jun 15 |