この投稿では、Java のネイティブ メソッドについて詳しく説明します。その基本的な構文とその動作を見ていきます。ネイティブ メソッドの使用法を示す Java コード例があります。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
Java でのネイティブ メソッドの使用方法の基本的な構文は次のとおりです。
[ public / protected / private] native [return-type] methodName ();
上記の構文は、Java でネイティブ メソッドがどのように宣言されるかを示しています。通常のメソッドと同様に、アクセス修飾子の定義、その後にネイティブ キーワード、次にメソッドの戻り値の型、最後に必要な入力パラメータを指定したメソッド名を定義する必要があります。
C/C++ など、Java 以外の言語で実装されたメソッドとして定義できます。このようなメソッドの使用の背後にある一般的な考え方は、C/C++ で利用可能な高いパフォーマンスまたはメモリ管理を利用することです。
他の言語で書かれたメソッドをサポートするために、Java は Java ネイティブ インターフェイスと呼ばれるインターフェイスを提供します。これは Java と他の言語の間の仲介者として機能します。 JNI を使用する動機は、コードの再利用性と高いパフォーマンスを提供する能力にあります。 C/C++ などの他の言語で書かれたコードは移植できないことに注意してください。
Java ネイティブ インターフェイスの主なコンポーネントは次のとおりです:
ここで、Java でネイティブ メソッドがどのように機能するかを明確に理解する例を見ていきます。ネイティブ メソッドの使用に必要な手順は次のとおりです:
以下の例は、Java コードとネイティブ コードの 2 つの部分に分かれています。
これは、ネイティブ メソッドを含む Java クラスです。
コード:
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")); } }
上記の例には、NativeDemo クラスで宣言されたネイティブ メソッドが含まれています。 encryptData メソッドの実装を C で記述しました。ご覧のとおり、静的ブロックを使用しました。その目的は、encryptData メソッドの実装が利用可能なネイティブ C ライブラリをロードすることです。重要な注意点の 1 つは、System.loadLibrary メソッドの文字列パラメーターとして、囲んでいる Java クラスの小文字の名前を指定する必要があることです。上記で宣言した手順に従って、Java コードをコンパイルします。
次のコマンドは、上記の Java コードをコンパイルします。
次のステップでは、以下で説明するように javah ユーティリティを使用してヘッダー ファイルを作成します。
上記のコマンドは、クラス名と同じ名前の javah ファイルを生成します。ネイティブ メソッドの C 実装を作成する際には、このファイルをインクルードする必要があります。
これは、ネイティブ関数 encryptData の C 実装です。
コード:
#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 }
すべてがうまくいけば、以下の出力が表示されます:
上記の記事から、それを明確に理解できます。 Java で作成されたほとんどのリアルタイム アプリケーションは、ネイティブ メソッドを利用して、C/C++ などのネイティブ プログラミング言語で利用できるパフォーマンスとメモリ管理の利点を活用します。
以上がJavaのネイティブメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。