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