Heim >Java >javaLernprogramm >Native Methoden in Java
In diesem Beitrag sehen wir eine detaillierte Erklärung der nativen Methoden in Java. Wir werden die grundlegende Syntax und ihre Funktionsweise sehen. Es wird Java-Codebeispiele geben, die die Verwendung nativer Methoden zeigen.
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Hier ist eine grundlegende Syntax für die Verwendung nativer Methoden in Java:
[ public / protected / private] native [return-type] methodName ();
Die obige Syntax zeigt, wie eine native Methode in Java deklariert wird. Ähnlich wie bei einer regulären Methode ist die Definition eines Zugriffsmodifikators erforderlich, gefolgt vom nativen Schlüsselwort, dann dem Rückgabetyp der Methode und zuletzt dem Methodennamen mit allen erforderlichen Eingabeparametern.
Wir können es als Methoden definieren, die in anderen Sprachen als Java implementiert sind, wie zum Beispiel C/C++. Die allgemeine Idee hinter der Verwendung solcher Methoden besteht möglicherweise darin, die in C/C++ verfügbare hohe Leistung oder Speicherverwaltung zu nutzen.
Um in anderen Sprachen geschriebene Methoden zu unterstützen, stellt Java eine Schnittstelle namens Java Native Interface bereit, die als Vermittler zwischen Java und anderen Sprachen fungiert. Die Motivation für den Einsatz von JNI liegt in seiner Fähigkeit, Code-Wiederverwendbarkeit und hohe Leistung zu bieten. Beachten Sie, dass in anderen Sprachen wie C/C++ geschriebener Code nicht portierbar ist.
Im Folgenden sind die Hauptkomponenten der nativen Java-Schnittstelle aufgeführt:
Jetzt sehen wir ein Beispiel, das klar versteht, wie native Methoden in Java funktionieren. Im Folgenden sind die Schritte aufgeführt, die bei der Verwendung nativer Methoden erforderlich sind:
Das folgende Beispiel wird in zwei Teile unterteilt: Java-Code und nativer Code.
Hier ist unsere Java-Klasse, die die native Methode enthält.
Code:
package com.edubca.nativedemo; class NativeDemo { public native String encryptData (String inputdata); static { System.loadLibrary ("nativedemo"); /* lowercase of classname! */ } public static void main (String[] args) { NativeDemo demo = new NativeDemo (); System.out.println("Encrypted data is " + demo.encryptData ("This is Edubca")); } }
Das obige Beispiel enthält eine native Methode, die in der NativeDemo-Klasse deklariert ist. Wir haben die Implementierung der encryptData-Methode in C geschrieben. Wie Sie sehen, haben wir einen statischen Block verwendet, dessen Zweck darin besteht, die native C-Bibliothek zu laden, in der die Implementierung der encryptData-Methode verfügbar ist. Ein wichtiger Hinweis ist, dass Sie den Kleinbuchstabennamen der umschließenden Java-Klasse als String-Parameter in der System.loadLibrary-Methode angeben sollten. Gemäß den oben angegebenen Schritten ist es an der Zeit, unseren Java-Code zu kompilieren.
Der folgende Befehl kompiliert den obigen Java-Code.
Im nächsten Schritt erstellen wir eine Header-Datei mit dem Javah-Dienstprogramm, wie unten beschrieben.
Der obige Befehl generiert eine Javah-Datei mit demselben Namen wie der Name der Klasse. Beim Schreiben der C-Implementierung der nativen Methode sollten Sie diese Datei einschließen.
Hier ist die C-Implementierung der nativen Funktion encryptData.
Code:
#include <jni.h> #include <stdio.h> #include "NativeDemo.h" JNIEXPORT void JNICALL Java_NativeDemo_encryptData(JNIEnv *env, jobject obj, jstring inputstr) { const char *str= (*env)->GetStringUTFChars(env,inputstr,0) // create string from jstring char Newch = '@'; for(i = 0; i <= strlen(str); i++) { if(str[i] == 'a' || str[i]== 'e' || str[i]== 'i' || str[i]== 'o' || str[i]== 'u' || str[i] == 'A' || str[i]== 'E' || str[i]== 'I' || str[i]== 'O' || str[i]== 'U') { str[i] = Newch; } } return env->NewStringUTF(str); // convert string to jstring }
Wenn alles gut geht, sehen Sie die folgende Ausgabe:
Aus dem obigen Artikel haben wir ein klares Verständnis davon. Die meisten in Java geschriebenen Echtzeitanwendungen nutzen native Methoden, um die Leistungs- und Speicherverwaltungsvorteile zu nutzen, die in nativen Programmiersprachen wie C/C++ verfügbar sind.
Das obige ist der detaillierte Inhalt vonNative Methoden in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!