Hi Kevin, Thanks for the extensive checks on these scenario's. I believe the scenario where jlink is used with an "old" JDK (e.g. 21) in combination with the most recent JavaFX release is very common. In that case, it seems to be required to prepend the module path with $JAVA_HOME/jmods, correct? If that is the case, we need to announce and explain it very well, as developers will run into it and get confused.
- Johan Op do 5 sep 2024 om 23:18 schreef Kevin Rushforth <k...@openjdk.org>: > Add the `jdk.jsobject` module to JavaFX. This module is currently > delivered by the JDK, but will be terminally-deprecated in JDK 24 by > [JDK-8311530](https://bugs.openjdk.org/browse/JDK-8311530), which is out > for review at openjdk/jdk#20555. We therefore plan to start delivering it > with JavaFX in JavaFX 24. > > ### Testing scenarios > > Both JDK and JavaFX for some period of time, so we need to test various > scenarios. I built and tested this PR branch with each of the following > JDKs: > > 1. JDK 23 or earlier (I used the default boot JDK, which is currently JDK > 22.0.2); this JDK includes `jdk.jsobject` as a normal, non-upgradable module > 2. A locally-built JDK 24 from my [8311530-depr-jsobject]( > https://github.com/kevinrushforth/jdk/tree/8311530-depr-jsobject) branch, > which has the fix for [JDK-8311530]( > https://bugs.openjdk.org/browse/JDK-8311530); this JDK includes > `jdk.jsobject` as a terminally-deprecated, upgradable module > 3. A locally-built JDK 24 from my [WIP-rm-jsobject]( > https://github.com/kevinrushforth/jdk/tree/WIP-rm-jsobject) branch, which > removes the `jdk.jsobject` module, and is therefore a prototype of what > will happen in JDK 26 (or later) when it is removed from the JDK > > I ran a build and test of JavaFX from this PR branch using each of the > above JDKs. All tests pass. > > I then took the JavaFX artifacts built by JDK 1 (matching how we will > deliver this in JavaFX 24), and ran the following additional tests, all of > which match my expectations: > > * java --module-path=.../jfx/build/sdk/lib without any additional flags > (required for JDK 1; recommended for JDK 3) <br> RESULT: JDKs 1 and 2 use > the `jdk.jsobject` module from the JDK; JDK 3 uses the `jdk.jsobject` > module from JavaFX > * java --module-path=.../jfx/build/sdk/lib > --upgrade-module-path=.../jfx/build/sdk/lib (recommended for JDK 2, OK for > 3) <br> RESULT: JDK 1 will fail to launch; JDKs 2 and 3 use the > `jdk.jsobject` module from JavaFX > * jlink with .../jfx/build/jmods ahead of $JAVA_HOME/jmods (recommended > for JDKs 2 and 3) <br> RESULT: JDK 1 will fail to link; JDKs 2 and 3 use > the `jdk.jsobject` module from JavaFX > * jlink with $JAVA_HOME/jmods ahead of .../jfx/build/jmods (required for > JDK 1) <br> RESULT: JDKs 1 and 2 will use the `jdk.jsobject` module from > the JDK; JDK 3 uses the `jdk.jsobject` module from JavaFX > > I have not verified the maven artifacts, but they are being generated > correctly. > > ------------- > > Commit messages: > - Merge branch 'master' into 8337280-jsobject > - Merge branch 'master' into 8337280-jsobject > - Merge branch 'master' into 8337280-jsobject > - Update copyright years > - Merge branch 'master' into 8337280-jsobject > - Update to pick up latest version from jdk master > - 8337280: Include jdk.jsobject module with JavaFX > > Changes: https://git.openjdk.org/jfx/pull/1529/files > Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1529&range=00 > Issue: https://bugs.openjdk.org/browse/JDK-8337280 > Stats: 304 lines in 6 files changed: 299 ins; 0 del; 5 mod > Patch: https://git.openjdk.org/jfx/pull/1529.diff > Fetch: git fetch https://git.openjdk.org/jfx.git > pull/1529/head:pull/1529 > > PR: https://git.openjdk.org/jfx/pull/1529 >