Erste Schritte mit Java Native Interface (JNI)

Getting Started With Java Native Interface



Java Native Interface, abgekürzt JNI, ist eine Programmierschnittstelle, mit der Java-Entwickler Codes und Ausschnitte aus anderen Programmiersprachen in Java ausführen können. Es wird mit dem wesentlichen Java Software Development Kit oder SDK geliefert (wir werden das in einem anderen Tutorial behandeln).

JNI wird auch für seine Funktion verehrt, APIs aufzurufen, um sich in eine Java Virtual Machine in Java-Anwendungen einzuschleichen. Dadurch können die Entwickler den Java-Code innerhalb des Codes der nativen Anwendung aufrufen.







Wenn Sie einige Zeit mit Java verbracht haben, sind Sie wahrscheinlich bereits auf die vielen Leistungsprobleme gestoßen, die unweigerlich auf Sie zukommen. Dies ist kein Problem, wenn Sie denselben Code in der Muttersprache ausführen, die beim Lesen in einem kompilierten Modell über 18-mal schneller ausgeführt werden kann. Darüber hinaus können Sie auch veraltete/inkompatible Hardwareroutinen mit nativen Codes in anderen Sprachen verwenden.



Dieses Tutorial zeigt, wie der C/C++-Maschinencode aus einer Java-Anwendung aufgerufen werden kann.



Voraussetzungen

Sie werden einige Dinge benötigen, um diese Anleitung richtig zu befolgen. Dazu gehören der Java-Compiler oder Javac.exe zusammen mit der JVM sowie der native Methoden-C-Generator (javah.exe). Alle drei sind in das Software Development Kit integriert, also sind Sie alle gut, wenn Sie das haben. Neben diesen drei benötigen Sie auch die Dateien, die JNI definieren, einschließlich nativer Header-Dateien und vollständiger Bibliotheksdateien.





Und natürlich verwenden wir in einem Tutorial zum Ausführen der C- und C++-Codes auch den C-Compiler, um eine gemeinsam genutzte Bibliothek zu erstellen.

JNI-Komponenten

JNI wird hauptsächlich von zwei Komponenten angetrieben, nämlich h und javah. H ist die Header-Datei-Komponente, die native Codes durch Java-Code ersetzt, während Javah es so macht, dass diese Datei selbst in App-Header-Dateien geladen werden kann.



Aufrufen von C/C++ aus Java-Code

Schritt 1: Code in Java schreiben

Der Code wird zunächst in Java geschrieben und erfüllt drei Bedingungen. Zuerst wird es mit der nativen Methode geschrieben, die später aufgerufen werden soll. Zweitens muss es die gemeinsam genutzte Bibliothek laden, zu der der native Code gehört, und schließlich die nativen Methoden aufrufen.

Lassen Sie uns diesen Code verwenden, um weiter zu veranschaulichen:

Beachten Sie die Zeilen 3 und 6; Dies sind die Zeilen, in denen die nativen Methoden enthalten sind. Der Code, der die Shared Libraries lädt, befindet sich in Zeile 10, was dazu führt, dass die Methode zwischen den Zeilen 12 bis 15 aufgerufen wird.

Schritt 2: Kompilieren des Java-Codes in Bytecode

Der zweite Schritt hat mit der Kompilierung des Java-Codes zu tun. Der Javac-Compiler kann die Arbeit hier für uns erledigen; Geben Sie einfach den folgenden Befehl ein:

$javac Beispiel1.Java

Schritt 3: C/C++-Headerdateien erstellen

Als nächstes müssen die muttersprachlichen Header-Dateien erstellt werden. Diese Header-Dateien versorgen die Signaturen der nativen Codes.

Diese Header-Dateien können mit dem nativen Javah-Tool, einem mit SDK gebündelten C-Stub-Generator, mit dem folgenden Befehl erstellt werden:

javah Beispiel1

Die folgende Ausgabe sollte zurückgeben:

Schritt 4: Schreiben des nativen Codes

Hier schreiben wir C/C++-Code. Sie sollten alle Unterschriften notieren, die den in Schritt 1 gemachten Erklärungen ähneln müssen.

Im Folgenden ist eine Implementierung in C geschrieben:

Schritt 5: Erstellen Sie eine gemeinsam genutzte Bibliothek

Eine Shared Library kann mit jedem Compiler erstellt werden. Da die gemeinsam genutzte Bibliothek den nativen Code enthält, müssen wir einen erstellen.

Schritt 6: Starten Sie Ihr Programm

Dieser Schritt umfasst die Bewertung des Codes und das Erkennen von Problemen mit dem Programm. Dies betrifft die Java-Laufzeitumgebung, da der Code hauptsächlich in JVM ausgeführt wird.

Geben Sie den folgenden Befehl aus:

Java-Beispiel1

Es sollte zurückkehren:

Das war also unser kurzer Leitfaden für Anfänger zur Verwendung von Java Native Interface. Wir hoffen, Sie fanden es hilfreich.

Das Erlernen der Arbeit mit JNI ist für jeden, der Java-Anwendungen entwickeln möchte, insbesondere Android-Anwendungen für Smartphones, unerlässlich.