JavaFX and Panama

Kevin Rushforth kevin.rushforth at oracle.com
Tue Dec 5 16:25:39 UTC 2023


Our current practice, as discussed in this thread [1], is to update the 
minimum to a JDK LTS release. I would be reluctant to adopt a non-LTS 
release as the minimum and based on the responses the last time we 
raised this question, I suspect there would be other voices even more 
reluctant.

For the specific case of using Panama FFM or unnamed variable patterns, 
I don't see sufficient benefit to applications to justify it. These 
features would only be something used by JavaFX internals and wouldn't 
show up in any public API.

I do support bumping the minimum to JDK 21 in JavaFX 23, and was already 
planning to propose doing so early in the JavaFX 23 release.

-- Kevin

[1] https://mail.openjdk.org/pipermail/openjfx-dev/2022-July/034874.html


On 12/5/2023 12:28 AM, Nir Lisker wrote:
> Hi all,
>
> Panama's 'foreign' API will be released in JDK 22 [1][2]. It includes 
> 'foreign memory' API for managing off-heap java memory, and 'foreign 
> function' API for calling native functions. These replace some 
> sun.misc.unsafe operations and all JNI.
>
> We should start allowing developers to use the new APIs as they 
> greatly improve many aspects of the code (safer, simpler and possibly 
> more performant). I have used the foreign function API in other 
> projects since its incubation period (Java 18 or 19) and I can say 
> that it works well and causes much less headache than JNI, although I 
> didn't do a performance comparison in those cases.
>
> We should also think about replacing code with the new API. JavaFX 
> uses sun.miscs.Unsafe in MarlinFX, and JNI is used extensively. While 
> it's unreasonable (and at this point undesirable due to manpower 
> constraints) to replace all of JNI, there are places where this 
> approach should be looked at. The use of Unsafe also emits warnings, 
> which we are trying to avoid.
>
> I therefore propose that JavaFX 23 bump its Java requirement to 22, 
> maintaining the "N-1 guarantee". I think that this is a significant 
> enough addition that merits this version bump, and will also bring 
> with it all the previous features starting with Java 18, out of which 
> some useful ones are:
> * Code Snippets [3] (18)
> * Record Patterns [4] (21)
> * Pattern Matching for switch [5] (21)
> * Unnamed Variables & Patterns [6] (22)
>
> We can start using the new APIs once the jfx 22 branch is split from 
> the master.
>
> - Nir
>
> [1] https://openjdk.org/jeps/454
> [2] 
> https://download.java.net/java/early_access/jdk22/docs/api/java.base/java/lang/foreign/package-summary.html
> [3] https://openjdk.org/jeps/413
> [4] https://openjdk.org/jeps/440
> [5] https://openjdk.org/jeps/441
> [6] https://openjdk.org/jeps/456
>



More information about the openjfx-dev mailing list