ホームページ  >  記事  >  Java  >  Javaのネイティブメソッド

Javaのネイティブメソッド

PHPz
PHPzオリジナル
2024-08-30 15:41:22471ブラウズ

この投稿では、Java のネイティブ メソッドについて詳しく説明します。その基本的な構文とその動作を見ていきます。ネイティブ メソッドの使用法を示す Java コード例があります。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

Java でのネイティブ メソッドの使用方法の基本的な構文は次のとおりです。

[ public / protected / private] native [return-type] methodName ();

上記の構文は、Java でネイティブ メソッドがどのように宣言されるかを示しています。通常のメソッドと同様に、アクセス修飾子の定義、その後にネイティブ キーワード、次にメソッドの戻り値の型、最後に必要な入力パラメータを指定したメソッド名を定義する必要があります。

Java ではネイティブ メソッドはどのように機能しますか?

C/C++ など、Java 以外の言語で実装されたメソッドとして定義できます。このようなメソッドの使用の背後にある一般的な考え方は、C/C++ で利用可能な高いパフォーマンスまたはメモリ管理を利用することです。

他の言語で書かれたメソッドをサポートするために、Java は Java ネイティブ インターフェイスと呼ばれるインターフェイスを提供します。これは Java と他の言語の間の仲介者として機能します。 JNI を使用する動機は、コードの再利用性と高いパフォーマンスを提供する能力にあります。 C/C++ などの他の言語で書かれたコードは移植できないことに注意してください。

Java ネイティブ インターフェイスの主なコンポーネントは次のとおりです:

  • javah: このツールは、ネイティブ メソッドを含む既存の Java ファイル Java クラスから C と互換性のあるヘッダー ファイルを作成する Java 開発キットで利用できます。
  • h: これは、Java 開発キットで使用可能な C/C++ ベースのヘッダー ファイルで、Java データ型とネイティブ データ型の間のマッピングを提供します。上記の Javah ファイルは、このファイルを自動的に生成します。

Java のネイティブ メソッドの例

ここで、Java でネイティブ メソッドがどのように機能するかを明確に理解する例を見ていきます。ネイティブ メソッドの使用に必要な手順は次のとおりです:

  • プログラム Java コード。
  • Java コードをコンパイルします。
  • C ヘッダー ファイルを作成します。
  • C/C++ でネイティブ メソッド ロジックを実装します。
  • 共有ライブラリを作成します。
  • Java アプリケーションを実行してテストします。

以下の例は、Java コードとネイティブ コードの 2 つの部分に分かれています。

パート #1: Java

これは、ネイティブ メソッドを含む 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 コードをコンパイルします。

Javaのネイティブメソッド

次のステップでは、以下で説明するように javah ユーティリティを使用してヘッダー ファイルを作成します。
Javaのネイティブメソッド

上記のコマンドは、クラス名と同じ名前の javah ファイルを生成します。ネイティブ メソッドの C 実装を作成する際には、このファイルをインクルードする必要があります。

パート #2: 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
}
  • 上記のファイルは NativeDemo.c で保存されます。
  • 上記のコードから、暗号化のロジックが C 言語で記述されていることがわかります。このロジックは、すべての母音を @ に置き換えて文字列を返すことに基づいています。
  • 次のステップでは、以下のコマンドを使用して上記の C コードをコンパイルします。

Javaのネイティブメソッド

  • 上記のコマンドは、Java プログラミング層が C で書かれたコードを呼び出すために使用する共有ライブラリを作成します。コンパイラとオペレーティング システムに基づいて、さまざまなコンパイル戦略を使用できます。
  • 上記の手順を完了したら、以下のように Java コードの実行を呼び出します。

Javaのネイティブメソッド

すべてがうまくいけば、以下の出力が表示されます:

Javaのネイティブメソッド

結論

上記の記事から、それを明確に理解できます。 Java で作成されたほとんどのリアルタイム アプリケーションは、ネイティブ メソッドを利用して、C/C++ などのネイティブ プログラミング言語で利用できるパフォーマンスとメモリ管理の利点を活用します。

以上がJavaのネイティブメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。