JVMLS 2019: Updates zum Projekt Panama

Anfänger Jul 31 (10:18) 0
Auf dem JVM Language Summit 2019 stellte Maurizio Cimadomore Neuigkeiten zum Projekt Panama vor. Panama ist eine Alternative zu JNI (Java Native Interface) für die Einbindung von "fremden" (nicht-Java) APIs.

Mit Panama sollte die Komplexität bei der Einbindung von "fremden" APIs reduziert werden. An Beispiel von TensorFlow mit JNI wurde gezeigt, wie aufwendig das im Moment ist: Es sind ca. 3809 Code-Zeilen in C und noch weitere 7034 in Java notwendig um die Library über JNI einzubinden. Bei dieser Code-Basis ist auch der Aufwand zur Pflege bei neuen Versionen entsprechend hoch.

Panama vereinfacht diese Aufgabe:

jextract -C -x -C c++  \
        -L /usr/local/lib -l tensorflow --record-library-path \
        -o tf.jar -t org.tensorflow.panama \
        /usr/local/include/tensorflow/c/c_api.h

Mit jextract wird eine "tf-jar" Datei erzeugt, die dann direkt im Projekt eingebunden werden kann:

import java.foreign.memory.Pointer;
import static org.tensorflow.panama.c_api_lib.*;
...
System.out.println("TensorFlow Version: " + Pointer.toString(TF_Version()));

Weitere Beispiele zur bereits unterstützen Libraries finden wir auf: http://hg.openjdk.java.net/panama/dev/raw-file/foreign/doc/panama_foreign.html

Präsentation mit Details zum aktuellen Entwicklungsstand, die auf JVM Language Summit von Maurizio Cimadomore vorgestellt wurde, ist verfügbar auf YouTube: https://www.youtube.com/watch?v=r4dNRVWYaZI

Alle Kommentare
Durch die Nutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Unsere Datenschutzbestimmungen können Sie hier nachlesen