On Fri, 2 Aug 2024 21:29:15 GMT, Kevin Rushforth <k...@openjdk.org> wrote:
> 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. modules/jdk.jsobject/src/main/java/netscape/javascript/JSObject.java line 52: > 50: static { > 51: System.err.println("KCR: JavaFX version of jdk.jsobject loaded"); > 52: } This debug print statement is there to make it easy to see if the JavaFX version of this class is being loaded. I'll leave it during testing and review, but I'll remove it before the final review. ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1529#discussion_r1702335388