Vor vielen Jahren habe ich in einem Projekt einen in C geschriebenen Rechenkern in eine in Java geschriebene Web-Anwendung einbinden müssen. Der Rechenkern war recht komplex und über Jahre "gereift". Somit war es keine Option, ihn in Java neu zu schreiben.

Die Lösung: den Rechenkern aus der Web-Anwendung heraus über JNI (Java Native Interface) aufzurufen. Eine bis heute schmerzhafte Erinnerung. Das Lesen und Programmieren von JNI ist sehr "spröde" (um es freundlich auszudrücken) und birgt zudem noch einige Gefahren.

Mit Projekt Panama und der neuen "Foreign Function and Memory API" hat man sich auf die Fahnen geschrieben, genau diese Sprödheit und die Gefahren beim Arbeiten mit Code und Daten außerhalb der JVM-Runtime zu umgehen. Das hat meine Neugier geweckt.

Ich möchte in diesem Vortrag gegenüberstellen, wie sich native Aufrufe mit JNI und mit der "Foreign Function und Memory API" umsetzen lassen. Ist die Sprödheit in der neuen Welt Geschichte? Kann ich jetzt wirklich gefahrlos APIs aufrufen, die nicht in Java implementiert sind und nicht in einer JVM laufen?

Ich hoffe (und glaube) am Ende der Gegenüberstellung steht ein eindeutiges "Goodbye to JNI".