Java · Avançado · Inglês · Técnico
Foreign Function and Memory API
API estável desde o Java 22 para chamar código nativo e acessar memória fora da heap com segurança, em substituição ao JNI e ao Unsafe.
Onde usar
Aparece ao integrar bibliotecas C, como chamar strlen ou libs de compressão, sem escrever código C de cola.
Em código
var l = Linker.nativeLinker();
var sym = l.defaultLookup().find("strlen");
var h = l.downcallHandle(sym.get(),
FunctionDescriptor.of(JAVA_LONG, ADDRESS));
try (var a = Arena.ofConfined()) {
var s = a.allocateFrom("java");
long n = (long) h.invokeExact(s); // 4
}Exemplos
Use the Foreign Function and Memory API instead of JNI.
Use a Foreign Function and Memory API em vez do JNI.
The arena frees the off-heap memory when it closes.
A arena libera a memória fora da heap quando é fechada.
Cuidado
Ainda é uso avançado: a memória fora da heap precisa de uma Arena ou liberação correta, e o JDK avisa sobre acesso nativo restrito.
Sinônimos
FFM API, Project Panama
Antônimos
JNI