Minimum JDK policy for OpenJFX

Ty Young youngty1997 at gmail.com
Mon May 31 03:53:38 UTC 2021


On 5/30/21 5:19 PM, John Neffenger wrote:
> On 5/19/21 1:17 PM, Ty Young wrote:
>> Biggest things for JavaFX that I can think of is jextract, a tool for 
>> generating Java headers from a C header, and having all binding code 
>> written in Java.
>
> JavaFX has been doing its own manual form of Project Panama since 
> 2014. Look for the string "extends C.Structure" in the following two 
> files:
>
> https://github.com/openjdk/jfx/blob/master/modules/javafx.graphics/src/main/java/com/sun/glass/ui/monocle/MX6Cursor.java 
>
>
> https://github.com/openjdk/jfx/blob/master/modules/javafx.graphics/src/main/java/com/sun/glass/ui/monocle/EPDSystem.java 
>
>
> In both cases, the technique was used to let JavaFX bypass the header 
> file 'mxcfb.h' from NXP (formerly Freescale).
>
> I'm looking forward to replacing those hard-coded offsets with the 
> tools from Project Panama. In fact, I'm hopeful that Project Panama 
> will let me remove all of the native C code from the Monocle EPD 
> platform.


Now that you pointed it out, JavaFX uses SecurityManager:


https://github.com/openjdk/jfx/blob/5e6d4429159e3fab9ec0aab9720393850d179710/modules/javafx.graphics/src/main/java/com/sun/glass/ui/monocle/C.java#L40


Which is being deprecated. Panama has its own runtime flag to enable 
native access not tied to SecurityManager.


The C class native implementation can be replaced with Panama easily. A 
MemorySegment can be viewed using a ByteBuffer via:


MemorySegment segment = MemorySegment.allocateNative(8, 
ResourceScope.newImplicitScope());

ByteBuffer buffer = segment.asByteBuffer();


asByteBuffer() doc says it wraps the MemorySegment, so I'm guessing it 
has a strong reference and memory is freed once the buffer and segment 
are no longer referenced.


If someone wanted to try swapping out JavaFX's native implementation 
with Panama, this would be a good place to start IMO.


>
> John


More information about the openjfx-dev mailing list