RFR: 8337280: Include jdk.jsobject module with JavaFX [v3]

Kevin Rushforth kcr at openjdk.org
Wed Sep 25 18:39:45 UTC 2024


On Tue, 24 Sep 2024 17:39:18 GMT, Kevin Rushforth <kcr at 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.
>
> Kevin Rushforth has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 10 additional commits since the last revision:
> 
>  - Use --upgrade-module-path when compiling or running tests on JDK 24 or later
>  - Merge branch 'master' into 8337280-jsobject
>  - Update copyright year in settings.gradle
>  - 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

After merging in the latest master yesterday, I discovered that the recently-enabled javac lint warnings and `-Werror` when compiling the test classes will fail the build with "removal" warnings for those tests that use JSObject, when I run using my JDK 24 build with the patch from openjdk/jdk#20555. This is a good thing, since it means that those tests were not using the version of jdk.jsojbect from JavaFX. This highlights the needs to use `--upgradle-module-path` in our unit tests when running with JDK 24, so I pushed a commit that does that.

I'm done with my testing, and will switch to creating the CSRs.

Reviewers: @arapte @jaybhaskar

-------------

PR Comment: https://git.openjdk.org/jfx/pull/1529#issuecomment-2374880515


More information about the openjfx-dev mailing list