贫血吃什么比较好
Java Native Interface (JNI) ist eine standardisierte Anwendungsprogrammierschnittstelle (API), die die M?glichkeit schafft, aus der Programmiersprache Java heraus Plattform-spezifische Funktionen bzw. Methoden aufzurufen.
Im Gegensatz zu gew?hnlichen Java-Programmen ist ein Java-Programm, das JNI-Aufrufe verwendet, nur dann plattformunabh?ngig, wenn die native Programmbibliothek auf allen Plattformen verfügbar ist.
Einsatzzweck
[Bearbeiten | Quelltext bearbeiten]JNI erm?glicht es, native Methoden zu schreiben für Situationen, in denen es nicht m?glich ist, ausschlie?lich Java als Programmiersprache einzusetzen. Dies ist der Fall, wenn beispielsweise die Standard-Java-Klassenbibliothek bestimmte Plattform-abh?ngige Features oder andere Programmbibliotheken nicht unterstützt. Weiterhin ist es per JNI m?glich, eine weitere in einer anderen Programmiersprache programmierte Anwendung für Java zugreifbar zu machen. Viele Klassen der Java-Standardbibliothek basieren auf JNI, um beispielsweise die Datei-Ein- und Ausgabe oder Soundwiedergabe zu erm?glichen. Indem Java Leistungs- und Plattform-abh?ngige Implementierungen in die Standardbibliothek integriert, kann der Java-Programmierer und -Nutzer diese Features in sicherer und Plattform-unabh?ngiger Weise nutzen.
Gelegentlich wird JNI als Fluchttür ("escape hatch") für Java-Entwickler bezeichnet, da es ihnen den Zugriff auf Funktionalit?ten erm?glicht, der andernfalls über die Standard-Java-API nicht m?glich w?re. Es stellt die Schnittstelle zu anderen Programmiersprachen wie C oder C++ dar.
Mit JNI ist es m?glich, Funktionen einer Windows-DLL oder einer shared library unter Linux bzw. Mac OS X, die in C oder C++ programmiert sind, aus Java aufzurufen. Umgekehrt k?nnen ?native“ Programme Java-Methoden über JNI aufrufen oder eine JVM ausführen.
Java ruft native Methode auf
[Bearbeiten | Quelltext bearbeiten]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 Java-Programm wird übersetzt und anschlie?end mit dem Softwarewerkzeug javah
eine Header-Datei erstellt, die die Funktionsdeklaration vorgibt. Mit dieser Header-Datei kann dann die native Programmbibliothek erstellt werden.
In der nativen Programmbibliothek müssen spezielle Typen für primitive und komplexe Datentypen verwendet werden. Beispielsweise wird für ein Wahrheitswert jboolean
verwendet, anstatt der Typ boolean
und jdouble
für Variablen vom Typ double
. Au?er den Abbildungen für primitive Typen, existieren auch Abbildungen für komplexe Typen. Zu den primitiven und komplexen Typen z?hlen folgende:
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.
Natives Programm ruft Java auf
[Bearbeiten | Quelltext bearbeiten]Aus einem nativen Programm kann Java-Code aufgerufen werden. Dies ist beispielsweise notwendig, um eine enge Verzahnung zwischen Java und dem nativen Programm zu erm?glichen.
Siehe auch
[Bearbeiten | Quelltext bearbeiten]- Java Native Access (JNA) – Alternative zu JNI
Weblinks
[Bearbeiten | Quelltext bearbeiten]- Java Native Interface – offizielle Dokumentation bei Oracle
- Projektseite des JavaService
- Compiled Native Interface (CNI) Alternative zu JNI (siehe auch GNU Compiler for Java)
- NativeCall Alternative, um native Methoden ohne JNI aus Java aufzurufen
- JNI Typen