HTTP/2 301
server: AkamaiGHost
content-length: 0
location: https://openjdk.org/projects/panama
date: Sat, 19 Jul 2025 02:27:56 GMT
HTTP/2 301
content-type: text/html
location: /projects/panama/
content-security-policy-report-only: default-src 'self' *.openjdk.java.net feedburner.google.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' feeds.feedburner.com *.statcounter.com statcounter.com; img-src 'self' data: *.statcounter.com *.openjdk.java.net feedburner.google.com; frame-ancestors 'none'; report-uri https://openjdk.report-uri.io/r/default/csp/reportOnly
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-akamai-transformed: 0 - 0 -
date: Sat, 19 Jul 2025 02:27:56 GMT
set-cookie: _abck=916C6653176263DB7BDA2C2AE051D2E2~-1~YAAQNAHAReGEAR2YAQAA9HKCIA5kiTqKcdnmb14sLHxT3DMfoQ9cvHXbiyV3QO7CdpPIWD/F6+wV2ChLM/fISKktt57HeandCyrtNk2qTHigCwveo+N+GoRXQJEC5Jf820cw5LdQpewvf9TCG2eolo7bYNHDsinhX1wXOufh4yVHdtNvvOAQpL2wPtgdKtmGGLx48hgh0Iixtck/jzXycPHOxgiM+F6piAAiFpaBvL1ABPSWTkOnrq4N8hfzGe/NfhCFd1qxhFAkVQuMgwcXi12smrOTCMQ3ACt248S9SLSj32XDyoYaLZzFPYfKeyrAyPmE43b4aqvGPI8ZOlcLPJDYjdifF9eIoBMRm+5eKZ2kwzDZa0W6ZhKycZ5QrvM1P+Rhqc2ZNvnIrnjIql9tmxYlGw1bD6sM8kC7sPaEte7+sJYeXxjnMgq2UlApEYIvyao3vGY=~-1~-1~-1; Domain=.openjdk.org; Path=/; Expires=Sun, 19 Jul 2026 02:27:56 GMT; Max-Age=31536000; Secure
set-cookie: bm_sz=5D2E171A898A6B0F8B47686D7D8742EA~YAAQNAHAReKEAR2YAQAA9HKCIBxow5hwAEcb19MI0lZkQ9QQ/GOehl01p8J1lgZWL9ToAVeNlaXLuG9VdreNHhOad3/8ga38bQgWMd354OQUfFkEugWP10Mkb+WNkBQEXGEkLCb0bp2R+c2H0KQXQkCN/kyy50ALpxcT0ze5OE1Iud1njonNnGuYJh9fvcCsfcmlrrcNl36+U94AjIgrvwxj3v2X2zjhdYJBowxEi7JmfxRRBFJb5sK2FWKudDD8LTCA1UdNjGqlFsdrqqBeLr5+bEV91pnC93XKNU71yWga2tpr/XjkhrnuT/xk7yTR6chBEtz4S6KSbxDEx0l6RsP0t4xak9h7qWu/6XhS9b1RwbBPvafviUc=~4274229~4405557; Domain=.openjdk.org; Path=/; Expires=Sat, 19 Jul 2025 06:27:56 GMT; Max-Age=14400
HTTP/2 200
content-type: text/html
last-modified: Thu, 05 Jun 2025 17:17:24 GMT
vary: Accept-Encoding
etag: "6841d124-2ee4"
content-security-policy-report-only: default-src 'self' *.openjdk.java.net feedburner.google.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' feeds.feedburner.com *.statcounter.com statcounter.com; img-src 'self' data: *.statcounter.com *.openjdk.java.net feedburner.google.com; frame-ancestors 'none'; report-uri https://openjdk.report-uri.io/r/default/csp/reportOnly
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
accept-ranges: bytes
x-akamai-transformed: 0 - 0 -
content-encoding: gzip
date: Sat, 19 Jul 2025 02:27:57 GMT
content-length: 3517
Project Panama: Interconnecting JVM and native code
We are improving and enriching the connections between the Java
virtual machine and well-defined but “foreign”
(non-Java) APIs, including many interfaces commonly used by C
programmers.
To this end, Project Panama will include most or all of these
components:
- native function calling from JVM
- native data access from JVM or inside JVM heap
- new data layouts in JVM heap
- native metadata definition for JVM
- header file API extraction tools (jextract)
- native library management APIs
- native-oriented interpreter and runtime
“hooks”
- class and method resolution “hooks”
- native-oriented JIT optimizations
- tooling or wrapper interposition for safety
- exploratory work with difficult-to-integrate native
libraries
Community
This Project is sponsored by the Hotspot Group.
- Mailing lists & News
- Design documents
- JEPs
- Talks
Repository organization
Project Panama is designed to incubate a series of components
for eventual inclusion in the JDK, via curated merge. Project
Panama features are being actively developed in the following
repositories:
- Panama
foreign support, which adds support for foreign memory access,
as well as for foreign function calls;
- Panama
vector support, which adds vectorization support in Java
through JVM intriniscs; and
- jextract, a
tool which mechanically generate Java bindings from native library
headers.
The legacy Panama repository is also available here, although we do
not expect to carry out further work there; as such this repository
should not be used (and in the future we might make this more
explicit by marking the legacy repository as read-only).