Heim >Java >javaLernprogramm >Native Methoden in Java

Native Methoden in Java

PHPz
PHPzOriginal
2024-08-30 15:41:22508Durchsuche

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.

Wie funktioniert die native Methode in Java?

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:

  • javah: Dieses Tool ist im Java Development Kit verfügbar und erstellt Header-Dateien, die mit C kompatibel sind, aus einer vorhandenen Java-Datei-Java-Klasse, die native Methoden enthält.
  • h: Dies ist eine C/C++-basierte Headerdatei, die im Java Development Kit verfügbar ist und eine Zuordnung zwischen Java-Datentypen und nativen Datentypen bereitstellt. Die oben beschriebene Javah-Datei generiert diese Datei automatisch.

Beispiele für native Methoden in Java

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:

  • Java-Code programmieren.
  • Java-Code kompilieren.
  • Erstellen Sie eine C-Header-Datei.
  • Implementieren Sie native Methodenlogik in C/C++.
  • Erstellen Sie eine gemeinsame Bibliothek.
  • Java-Anwendungen ausführen und testen.

Das folgende Beispiel wird in zwei Teile unterteilt: Java-Code und nativer Code.

Teil #1: Java

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.

Native Methoden in Java

Im nächsten Schritt erstellen wir eine Header-Datei mit dem Javah-Dienstprogramm, wie unten beschrieben.
Native Methoden in Java

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.

Teil #2: C-Code

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
}
  • Die oben genannten Dateien werden mit NativeDemo.c gespeichert.
  • Aus dem obigen Code können wir ersehen, dass die Logik der Verschlüsselung in der Sprache C geschrieben ist. Die Logik basiert darauf, alle Vokale durch @ zu ersetzen und die Zeichenfolge zurückzugeben.
  • Im nächsten Schritt kompilieren Sie den obigen C-Code mit dem folgenden Befehl:

Native Methoden in Java

  • Der obige Befehl erstellt eine gemeinsam genutzte Bibliothek, die von der Java-Programmierschicht zum Aufrufen von in C geschriebenem Code verwendet wird. Wir können je nach Compiler und Betriebssystem verschiedene Kompilierungsstrategien verwenden.
  • Nach Abschluss der oben genannten Schritte können wir unseren Java-Code wie folgt aufrufen:

Native Methoden in Java

Wenn alles gut geht, sehen Sie die folgende Ausgabe:

Native Methoden in Java

Fazit

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn