ExpertiDict

Java · Avançado · Inglês · Técnico

Foreign Function and Memory API

/ˈfɔrən ˈfʌŋkʃən ænd ˈmɛməri ˌeɪ piː ˈaɪ/substantivo

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

Veja também

Todos os termos de Java