I'm nipafx (but you can call me Nicolai) and today it's gonna be you, me, Maurizio Cimadamore, and the state of Project Panama! Maurizio is the lead of Project Panama, which will improve and enrich the connections between the Java Virtual Machine and non-Java APIs, what we usually call native code. It's main thrust is to replace JNI with a vastly more usable and slightly more performant component.
Maurizio and I talked about all things Panama: the project's core mission, the split into foreign-memory access and foreign linker API, the new tool jextract, performance comparisons to JNI and Unsafe, the interaction with Project Valhalla, the project timeline, and a few more things. Check out the time stamps in the description to jump to what interests you most.
Ready? Then let's get it on!
▚Table of Contents
- Native interop in Java today
- Machine learning, OpenGL, etc.
- Native interop with Panama
- Generating interop classes with jextract
- Foreign-memory access API
- API evolution re confinement
- Confinement and threading
- New API vs Unsafe
- Performance vs Unsafe
- Foreign linker API
- Supported platforms
- API improvements in Java 17
- Panama will wrap up 2022/23
- jextract and Project Valhalla
- Panama and Valhalla will transform Java
Native code isn't really my strong suit and so I've never used JNI and am not sure whether I'll end up using Panama's accomplishments. But I started wishing I would.
Regarding Project Valhalla, which we touched on at the end: On the same stream I also talked to its lead Brian Goetz, and I'll upload that conversation soon, so subscribe if you don't want to miss it. By the way, I also had a longer conversation with Ron Pressler about the state of Project Loom - you can find that one over there.
I'll see you in the next one! So long...