Foreign Function & Memory API
- Java kursu
- Uzman
- Ders 29/46
- 5 dk
Java 21 FFM API ile modern yerel çağrıyı öğrenirsin.
Foreign Function & Memory API
FFM API (Foreign Function & Memory API, Java 21+), JNI'ye modern bir alternatiftir. java.lang.foreign paketindedir. Linker.nativeLinker() ile yerel bağlayıcı, SymbolLookup ile semboller, MemorySegment ile heap dışı bellek ve MethodHandle ile çağrı yapılır.
JNI'ya göre daha güvenlidir: bellek erişimi sınır denetimli, yaşam süresi Arena ile yönetilir. Yeni kodlarda JNI yerine FFM API önerilir.
MemorySegment ile bellek
MemorySegment, heap dışı (off-heap) bellek bölgesini temsil eder. Arena ile ayrılır; arena kapanınca bellek otomatik serbest bırakılır. Bu, JNI'deki manuel malloc/free risklerini azaltır.
Bir yerel işlev MethodHandle olarak alınır ve invoke ile çağrılır. Veriler MemorySegment üzerinde okunup yazılır; sınır denetimi yaşanan hataları erkenden yakalar.
Uygulama FFM Linker ile bağlayıcı hazırla
import java.lang.foreign.Linker; satırını ekle. Main sınıfının main metodunda Linker linker = Linker.nativeLinker(); ile bağlayıcı oluştur ve System.out.println("linker ready"); yazdır.
Başlangıç kodu
// java.lang.foreign paketinden Linker içe aktar
// Main: yerel bağlayıcı oluştur ve linker ready yazdırÖrnek çözüm
import java.lang.foreign.Linker;
public class Main {
public static void main(String[] args) {
Linker linker = Linker.nativeLinker();
System.out.println("linker ready");
}
}Beklenen çıktı
linker ready
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Linker oluşturmayı tamamla
Linker linker = Linker.____;
Linker linker = Linker.nativeLinker();
Açıklama: Linker.nativeLinker() yerel bağlayıcıyı verir.
2 FFM API hangi pakettedir?
- java.lang.native
- java.lang.foreign Doğru cevap
- java.foreign
- javax.jni
Açıklama: FFM API java.lang.foreign paketindedir.
3 FFM öğelerini eşleştir
| Kavram | Anlamı |
|---|---|
Linker |
Yerel çağrı köprüsü |
SymbolLookup |
Sembol bulma |
MemorySegment |
Heap dışı bellek |
Arena |
Bellek yaşam süresi |