- JNI
-
Java Native Interface (JNI) ist eine standardisierte Anwendungsprogrammierschnittstelle (API) zum Aufruf von plattformspezifischen Funktionen bzw. Methoden aus der Programmiersprache Java heraus.
Allerdings ist ein Java-Programm, das JNI-Aufrufe verwendet, nicht mehr plattformunabhängig, falls die native Programmbibliothek nicht auf allen Plattformen verfügbar ist.
Inhaltsverzeichnis
Einsatzzweck
So ermöglicht es JNI beispielsweise, dass ein Java-Programm Funktionen einer Windows-DLL oder einer shared library unter Linux, die in C oder C++ programmiert sind, aufruft. Umgekehrt ist ebenfalls möglich, dass „Native“-Programme Java-Methoden über JNI aufrufen oder eine komplette JVM ausführen können.
Java ruft Native auf
Um aus Java eine native Methode aufzurufen, muss diese zunächst als „
native
“ deklariert werden. Zudem muss das Objekt selbst die native Programmbibliothek mit dem Aufruf von „System.loadLibrary("<Name der Bibliothek>")
“ laden, bevor die native Methode selbst aufgerufen werden kann.Das Javaprogamm wird übersetzt und anschließend mit dem Softwarewerkzeug
javah
eine Headerdatei erstellt, die die Funktionsdeklaration vorgibt. Mit dieser Headerdatei kann dann die native Programmbibliothek erstellt werden.Eine der populärsten Anwendungen von JNI ist die Programmbibliothek Standard Widget Toolkit (SWT), die über JNI die Verwendung von Elementen der Grafischen Benutzeroberfläche des Betriebssystems ermöglicht.
Native ruft Java auf
Ein Aufrufgrund von Java-Methoden aus nativen Programmen ist die Ausführung einer Java-Anwendung als Netzwerkdienst auf Windows. So gibt es zum Beispiel eine Open-Source-Software namens JavaService, die JNI dafür verwendet.
Literatur
- Adrian Ofterdinger: Java Native Interface ab J2SE 1.4. In: Javaspektrum. Nr. 5, 2005, S.32-35.
Weblinks
- Java Native Interface – offizielle Dokumentation von SUN Microsystems
- Java Native Interface (JNI) Kapitel aus Java ist auch eine Insel
- Projektseite des JavaService
- Java Native Access (JNA) native Methoden ohne JNI aus Java aufrufen
- NativeCall alternative um native Methoden ohne JNI aus Java aufzurufen
Wikimedia Foundation.