Lab 07: Project Panama — FFM
Overview
Step 1: FFM API Overview
Project Panama FFM replaces JNI:
JNI (old): FFM (Java 21):
- Write C header - No C code needed
- Compile native library - Direct downcall via Linker
- Load with System.loadLibrary - Arena manages memory lifetime
- Fragile, error-prone - Type-safe MemoryLayout
- Cannot be verified by JVM - Verified by JVM
Core classes:
MemorySegment — a bounded region of memory (on-heap or off-heap)
Arena — controls lifetime of off-heap memory segments
Linker — creates handles to call native functions
SymbolLookup — finds native symbols by name
MemoryLayout — describes C struct/array memory layout
ValueLayout — describes primitive C type layoutStep 2: Arena and MemorySegment
Step 3: Calling strlen via Linker
Step 4: MemoryLayout — C Struct Mapping
Step 5: Full strlen via FFM API (Verified)
Step 6: Calling qsort via FFM
Step 7: Off-Heap Buffer Pattern
Step 8: Capstone — Complete FFM Demo
Summary
Concept
Class/API
Purpose
Last updated
