[11] RFR JDK-8202199 : Provide public, unsupported API for FX Swing interop

Prasanta Sadhukhan prasanta.sadhukhan at oracle.com
Sat May 5 08:58:57 UTC 2018

Hi All,

I have tried to address all comments from Nir, Phil, Mandy and Kevin got 
so far in this webrev

 >>In SwingNode, lines 870 -883, is there a reason that only the first 
method uncommented @Override? I don't understand the comment that wants 
to skip @Override.
If @override is not added, then it will cause recursion between 
LightweightContent.java:130 and LightweightContent.java:187 thereby 
causing StackOverflowError. I am also not sure about the comment of 
skipping @Override but I have removed it from this webrev.

On 5/5/2018 4:32 AM, Kevin Rushforth wrote:
> My quick comments:
> 1. The changes to java.desktop module-info.java won't compile when 
> applied to jdk-client, since there is already a qualified export of 
> the sun.swing package to another internal class. Can you update your 
> patch to be based off of jdk-client? I note that it requires a small 
> patch to be able to build FX with JDK 11 (it's a known gradle issue), 
> but it's not hard to do.
> 2. As I mentioned in an off-line email, the final version of the 
> javafx.swing patch will need to use 'requires static 
> jdk.unsupported.desktop' in its module-info.java, so that it will 
> still run on JDK 10 EA. This means that you will need to ensure that 
> jdk.unsupported.desktop is loaded via a service loader as discussed. 
> This will not affect the public API at all, so that can proceed in 
> parallel, but this needs to be fixed.
> 3. As I mentioned in my earlier reply to Mandy's comment, Swing 
> interop apps will fail if a security manager is installed, because the 
> jdk.unsupported.desktop classes are loaded by the app class loader. 
> This can be sorted out later as a follow-on bug, with permissions 
> added to the default policy file, etc.
> 4. As Phil mentioned, some docs would be good. They don't need to be 
> all that detailed, since it isn't intended for use by applications, 
> and will not be included in the published API docs bundle (i.e., it 
> should be excluded from "make docs").
> I will do a more detailed review early next week.
> -- Kevin
> On 5/4/2018 1:53 PM, Phil Race wrote:
>> Two quick comments.
>> 1) I'd like "Peer" removed from all the exported API.
>> 2) It is probably stable enough now that you can start to add some 
>> javadoc.
>> -phil.
>> On 05/04/2018 05:00 AM, Prasanta Sadhukhan wrote:
>>> Hi All,
>>> Please review an enhancement to remove the tight coupling of JDK 
>>> internal class from FX so that
>>> when javafx.* modules are removed from Openjdk build in jdk11, FX in 
>>> general, and fx swing interop, in particular, can still build and 
>>> function.
>>> Right now, FX uses 6 jdk internal packages
>>> sun.swing, sun.awt, java.awt.dnd.peer, sun.awt.dnd, sun.awt.image 
>>> and sun.java2d.
>>> However, the goal is not to use qualified exports of these internal 
>>> packages once FX is removed to be built along with JDK,
>>> The solution will define a new "jdk.unsupported.desktop" module that 
>>> exports public API
>>> that is intended to be used by the javafx.swing module (but it does 
>>> so with public exports and not qualified exports).
>>> The idea is the same as jdk.unsupported, in that it is documented as 
>>> being unsupported.
>>> Further, since it is only intended to be used by javafx.swing, it 
>>> need not be in the default module graph.
>>> The module-info.java will look like this:
>>> |module jdk.unsupported.desktop { requires transitive java.desktop; 
>>> exports jdk.swing.interop; } |||
>>> Enhancement: https://bugs.openjdk.java.net/browse/JDK-8202199, 
>>> https://bugs.openjdk.java.net/browse/JDK-8195811
>>> webrev: cr.openjdk.java.net/~psadhukhan/fxswing.6/
>>> CSR: https://bugs.openjdk.java.net/browse/JDK-8202175
>>> Regards
>>> Prasanta
>>> ||

More information about the openjfx-dev mailing list