JDK-8195798 : ��� Address dependencies in javafx.* modules on internal APIs of core modules
  • Type: Task
  • Component: javafx
  • Sub-Component: other
  • Priority: P2
  • Status: Resolved
  • Resolution: Delivered
  • Submitted: 2018-01-19
  • Updated: 2018-07-16
  • Resolved: 2018-07-16
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 11
11Resolved
Related Reports
Blocks :  
Blocks :  
Blocks :  
Blocks :  
Blocks :  
Blocks :  
Blocks :  
Blocks :  
Blocks :  
Blocks :  
Relates :  
Relates :  
Relates :  
Description
This is an umbrella task to address the dependencies in javafx.* modules on the internal APIs of core modules.

The javafx.* modules use several internal APIs via qualified exports from java.base and java.desktop in the implementation of JavaFX. Additionally, the jdk.packager module uses  internal APIs via qualified exports from the jdk.jlink module.

We should enumerate these qualified exports and file linked blocking issues to address them.
Comments
The last remaining use of internal packages in the javafx.swing module has been eliminated. Marking this Task as "Delivered".
16-07-2018

NOTE: we do not have to solve the qualified exports needed by the jdk.packager. The javapackager tool is not part of the standalone OpenJFX builds, so we do not need these dependencies. Separately, I have filed a cleanup issue, JDK-8203379, to remove the packager sources and build logic from the OpenJFX repo.
17-05-2018

This is complete enough for the purpose of releasing a standalone JavaFX SDK and removing the javafx.* modules from the JDK. The only two remaining items will not block the release. They are: 1. JDK-8195808 : Eliminate dependency on sun.print in javafx.graphics This is only needed so that print dialogs will be on top of their owner window (which was fixed as a bug recently). In the absence of a solution, the dialogs will not always be on top, which is just a bug that can be fixed later. 2. JDK-8195811 : Support FX Swing interop using public API Until this is addressed, it will require applications that use Swing interop to add the needed qualified exports on the command like in order for Swing interop to work. A longer term solution is being explored.
20-04-2018

REMOVING QUALIFIED EXPORTS This note on removing qualified exports is applicable to all of the linked blocking bugs. To remove a qualified export of a package that is no longer in use, do the following: * Edit the dependencies/java.base/module-info.java.extra file (or dependencies/java.desktop/module-info.java.extra) and remove all of the relevant lines * Edit build.gradle and remove the relevant '--add-exports' statements from the 'qualExportsCore' or 'qualExportsSwing' list To test that your change will not break the build you need to do the following three-step process: 1. Use jdk-10 as a boot JDK to build your FX sdk locally: $ cd $JFX_ROOT/rt $ gradle sdk 2. Configure and build a local clone of http://hg.openjdk.java.net/jdk/jdk (or .../jdk/client) using the modular-sdk from the above local FX build: $ cd $JDK_ROOT $ unset CLASSPATH $ sh configure --with-import-modules=$JFX_ROOT/rt/build/modular-sdk $ make images 3. Use the above JDK to build and test FX: $ export JAVA_HOME=$JDK_ROOT/build/*/images/jdk $ export PATH=$JAVA_HOME/bin:$PATH $ cd $JFX_ROOT/rt $ gradle sdk apps $ gradle --continue -PFULL_TEST=true test # NOTE: also add -PUSE_ROBOT=true if you think you need to run robot tests
25-01-2018

I have filed bugs to address all qualified exports in sections A, B, and C above and linked them as blocking bugs.
20-01-2018

Here is a list of qualified exports used by the jdk.packager module: D. Qualified exports from java.base: exports sun.security.pkcs to jdk.packager; exports sun.security.timestamp to jdk.packager; exports sun.security.x509 to jdk.packager; E. Qualified exports from jdk.jlink: exports jdk.tools.jlink.internal.packager to jdk.packager;
19-01-2018

Here is a list of qualified exports that javafx.* modules currently need. A. Qualified exports from java.base: exports jdk.internal.misc to javafx.graphics; exports jdk.internal.ref to javafx.media; exports sun.net.www to javafx.web; exports sun.nio.ch to javafx.media; exports sun.reflect.misc to javafx.base; exports sun.reflect.misc to javafx.fxml; exports sun.reflect.misc to javafx.web; exports sun.util.logging to javafx.base; exports sun.util.logging to javafx.controls; exports sun.util.logging to javafx.fxml; exports sun.util.logging to javafx.graphics; exports sun.util.logging to javafx.swing; B. Qualified exports from java.desktop other than Swing interop: exports sun.font.lookup to javafx.graphics; exports sun.print to javafx.graphics; C. Qualified exports from java.desktop for Swing interop: exports java.awt.dnd.peer to javafx.swing; exports sun.awt to javafx.swing; exports sun.awt.dnd to javafx.swing; exports sun.awt.image to javafx.swing; exports sun.java2d to javafx.swing; exports sun.swing to javafx.swing;
19-01-2018