[External] : Re: Dependencies on java.desktop

Kevin Rushforth kevin.rushforth at oracle.com
Tue May 18 21:40:55 UTC 2021


As noted in the thread you quoted below, removing the dependency on 
java.desktop from javafx.base isn't a particularly hard problem, and is 
tracked by JDK-8240844 [1]. And even though it will require a spec 
change (meaning a CSR), it doesn't result in any loss of functionality, 
since in order to usefully do anything with the JavaBeanXxxxx classes 
requires java.desktop anyway.

Removing the dependency on java.desktop from javafx.graphics is a larger 
issue because of printing. There is also an implementation dependency on 
the Desktop class to implement HostServices::showDocument that would 
need to be redone. And of course it depends on the above (eliminating 
the dependency from javafx.base) being done first.

For printing we would need to do one of two things:

1. Eliminate the implementation dependency on the Java2D printing code. 
This is a large effort, but would preserve existing functionality.

2. Make the JavaFX Printing function "optional" (i.e., make it a 
"ConditionalFeature"), such that if java.desktop is not present, 
printing doesn't work (all of the printing APIs would throw an 
UnsupportedOperationException if java.desktop is not available). An 
application that wants to do printing would need to include java.desktop.

Option 1 would be my preferred approach, but as mentioned above it's a 
lot of work. Option 2 would need a spec change, and I'm not convinced we 
want to do it. If there are enough other developers who would want this, 
we could open it up for discussion for some future version (not JavaFX 17).

Phil might have some thoughts on this.

-- Kevin

[1] https://bugs.openjdk.java.net/browse/JDK-8240844


On 5/18/2021 10:45 AM, Tom Schindl wrote:
> Uff - I'd like to revisit this topic. As I did some jlink stuff for 
> our applications adding java.desktop once more bugged me.
>
> I guess the first thing to do is to file a JIRA-Ticket but it really 
> starts to bug me to include java.desktop although I don't plan to use 
> printing (and I guess > 90% of the JavaFX don't use the printing API 
> either but produce PDFs or whatever) and Java-Beans.
>
> Tom
>
> Am 27.03.18 um 14:26 schrieb Kevin Rushforth:
>> Hi Tom,
>>
>> Yes, this is an unfortunate dependency. It is "only" an 
>> implementation dependency, meaning that nothing in the public API 
>> depends on java.desktop (which is why we don't "requires transient 
>> java.desktop"), so it should be possible to remove this dependency in 
>> the future. As noted, it is only there because Java Beans is part of 
>> the java.desktop module.
>>
>> In the interim, your suggestion of "requires static java.base" could 
>> be the way to go. It would need a spec change to the JavaFX beans 
>> adapter classes documenting that they would throw an 
>> UnsupportedOperationException if java.desktop was not present at 
>> runtime, along with a recommendation that applications needing that 
>> functionality should add "requires java.desktop" to their own 
>> module-info.java.
>>
>> Note that this would only help non-graphical JavaFX applications that 
>> use javafx.base for its collections, properties, and bindings, since 
>> javafx.graphics requires java.desktop in a way that currently cannot 
>> easily be made optional (not without reimplementing printing support 
>> anyway).
>>
>> -- Kevin
>>
>>
>> Tom Schindl wrote:
>>> Hi,
>>>
>>> Anyone else has an opinion on that? Is require static the way to go?
>>>
>>> Tom
>>>
>>> On 21.03.18 23:23, Tom Schindl wrote:
>>>> Hi,
>>>>
>>>> I always thought the JavaFX-Codebase should be able to run with 
>>>> just the
>>>> java.base module but I was browsing the codebase a bit and was 
>>>> suprised
>>>> (or rather shocked) that even the base-module requires java.desktop.
>>>>
>>>> If I get it correct this because of the java.beans (provided by the
>>>> adapters) stuff is found in there. Why hasn't the requires there not
>>>> defined as:
>>>>
>>>> requires static java.desktop;
>>>>
>>>> Tom
>>>>



More information about the openjfx-dev mailing list