CodeBlanks Logo Icon CodeBlanks

Foreign Function & Memory API

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

Main.java
// java.lang.foreign paketinden Linker içe aktar

// Main: yerel bağlayıcı oluştur ve linker ready yazdır

Örnek çözüm

Main.java
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

Soru
Linker linker = Linker.____;
Cevap
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

Uzman bölümündeki tüm dersler