FFM goes final!
maurizio.cimadamore at oracle.com
Fri Oct 20 11:16:49 UTC 2023
As some of you might know, JEP 454 has landed in the JDK repository and
the FFM API is no longer a preview API :-)
A binary snapshot containing the Java 22 changes is available here:
And, a jextract branch to go with it is also available here:
Over the last few months the focus has been on further polishing the
rough edges of the API. We have just published a PR  which enhances
the "critical" linker option so that heap segments can be passed
directly to native code (w/o copy). We believe this further enhancement
should bring some benefits for legacy APIs that are "stuck" dealing with
byte arrays, but need to interop with native code.
We have also been working on the tooling aspect of restricted methods,
adding support for restricted method warnings in javac  and also
adding better javadoc support for restricted methods .
It is also nice to see the first attempts at using FFM within the JDK
itself , we hope this trend is one that will continue.
Of course, finalizing the API doesn't mean we're done (is there ever
such a thing?). We are actively exploring ways to model foreign data
with records, and we plan to make more progress on improving the startup
of FFM clients. More longer term, there's a lot of interesting synergies
to look forward to, from structured arenas (Loom) to better support for
unsigned types (Valhalla). Plenty of exciting stuff to work on still!
We'd also like to take a moment to thank all of you. It is a privilege
to be in a position to improve the Java platform, and one that we do not
take lightly. But, without your help, all our efforts will be in vain.
So we're very grateful for the feedback you have provided along the way,
in every shape or form, be it a bug report, a benchmark or even just a
"git checkout" to see what's up. You are the pulsating heart of what we
call Java. Please keep it up, and keep helping us making Java a better
 - https://git.openjdk.org/jdk/pull/16201
 - https://git.openjdk.org/jdk/pull/15964
 - https://github.com/openjdk/jdk/pull/16188
 - https://git.openjdk.org/jdk/pull/15476
More information about the panama-dev