Seguimos viendo FFM API
Dónde podemos usar FFM API:
Librerías de machine learning
Integración con:
- CUDA,
- TensorRT,
- ONNX Runtime.
Motores gráficos
Bindings contra:
- Vulkan,
- OpenGL,
- SDL.
Bases de datos
Drivers nativos de:
- SQLite,
- RocksDB.
Sistemas embebidos
- Acceso a APIs del sistema operativo.
- Upcalls: cuando C llama a Java
La FFM API también soporta: upcalls
Es decir:
- código nativo llamando código Java.
- Algo parecido a callbacks.
Veamos un ejemplo práctico: strlen
import java.lang.foreign.*;
import java.lang.invoke.MethodHandle;
import static java.lang.foreign.ValueLayout.*;
public class Main {
public static void main(String[] args) throws Throwable {
Linker linker = Linker.nativeLinker();
MemorySegment strlenAddr =
linker.defaultLookup()
.find("strlen")
.orElseThrow();
MethodHandle strlen = linker.downcallHandle(
strlenAddr,
FunctionDescriptor.of(JAVA_LONG, ADDRESS)
);
try (Arena arena = Arena.ofConfined()) {
MemorySegment text =
arena.allocateFrom("Hola Mundo");
long size = (long) strlen.invoke(text);
System.out.println(size);
}
}
}
FFM API esta disponible desde Java 21
La FFM API es probablemente uno de los cambios más importantes del ecosistema Java moderno.
Porque permite:
- interoperabilidad nativa,
- manejo eficiente de memoria,
- reemplazar gran parte de JNI,
- acceso a APIs del sistema,
- y programación de bajo nivel.
Todo usando una API moderna y mucho más amigable.
Project Panama abre la puerta a una nueva generación de aplicaciones Java capaces de integrarse con el mundo nativo sin el dolor histórico de JNI.

No hay comentarios.:
Publicar un comentario