ホームページ  >  記事  >  Java  >  Javaのネイティブキーワード

Javaのネイティブキーワード

王林
王林オリジナル
2024-08-30 15:21:451021ブラウズ

ネイティブ キーワードは、JAVA 言語と、操作しているマシンによって異なる可能性がある、JAVA を除くさまざまな言語で書かれたコードまたはライブラリのチャンクとの間のリンクとして機能します。ネイティブ キーワードがメソッドに適用される場合、そのメソッドは、JNI (JAVA ネイティブ インターフェイス) 経由で他の言語 (C または C++ など) で書かれたネイティブ コードを使用して実装されることを意味します。

Java のネイティブ キーワードの構文

ネイティブ コードの構文は通常の関数定義と同じですが、関数の先頭に「native」キーワードが追加されます。

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

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

例:

public class testing
{public native String testMethod (String parameter);}

ここで public はアクセス修飾子です。別のファイルが使用できるように、パブリックにする必要があります。文字列は関数の戻りデータ型です。キーワードに応じて、整数、文字、またはブール値を指定できます。  この関数に渡されるパラメータもデータ型は文字列です。すべてはアンダークラスに保たれるべきです。

関数宣言後、作成されたオブジェクトとロードされたライブラリを介してこの関数を呼び出します。

public static void main(String[] args)
{
System.loadLibrary("testing");
testing testingnew = new testing();
String  output   = testingnew.stringMethod("NATIVE");
}

上で定義したライブラリを最初にロードし、そのオブジェクトを作成する必要があります。このオブジェクトを使用して、ネイティブ関数が呼び出されます。

ネイティブ キーワードはどのように機能しますか?

ファイルは 2 つあるはずです。 1 つは JAVA コードを含み、もう 1 つは C/C++ レガシー コードを含む必要があります。 Java コードはレガシー コードの呼び出しに使用されます。この従来のコードはハードウェアと対話し、期待される出力を返します。

従来のコードがハードウェアと対話する場合、JAVA が定めたガイドラインに従いません。このコードは、必要な処理を実行して出力を取得し、結果を JNI に渡します。 Java ネイティブ インターフェイスは、ネイティブ コードに関連するすべてのルールを含むディレクトリをチェックインします (これは SDK の javah.exe というファイルの下にあります)。 JNI は Java ツールキットの一部として設計されています。この処理の後、JAVA は JAVA 言語自体で出力をパブリッシュします。 JAVA プログラムを作成するときは、JAVA ファイルと従来のファイルの間に変数/データ フローのリンクがあり、両方の間でスムーズなデータ フローが存在することを確認する必要があります。

ネイティブ キーワードを使用する方法を説明する手順を以下に示します。

  1. ネイティブ メソッド、ロードされた共有ライブラリを含む JAVA コードを作成し、「filename.JAVA」を使用して保存します。
  2. JAVA コードをコンパイルし、コードをバイトコードに変換します。
  3. 呼び出されるネイティブ関数のシグネチャを含む C/C++ ヘッダー ファイルを作成します。
  4. C/C++ コードの作成にはネイティブ メソッドの実装があります。
  5. JAVA 実行可能ファイルを実行して結果を確認します。

Eclipse でコードを記述し、そのコードを実行して C コードを実装するライブラリを作成する必要があります。

コード: パッケージ com.slackerOne;

public class JPP {
public static native void pAccess();
public static native int pRead();
public static native void pWrite(int port, int output);
static{
System.loadLibrary("JPPlibs");
}
public void jAccess(){
JPP.pAccess();
}
public int jRead(){
return JPP.pRead();
}
public void jWrite(int port, int output){
JPP.pWrite(port, output);
}
}

このコードを Java プロジェクトの新しい「クラス」に保存した後、ヘッダー ファイルを生成するために実行環境をセットアップする必要があります。

Javaのネイティブキーワード

これを実行すると、ライブラリが生成されるはずです。

出力:

ここでは、ネイティブ コードと Java 言語をリンクする Java コードからヘッダー ファイルを作成しました。

Javaのネイティブキーワード

Java のネイティブ キーワードの利点

以下に利点の一部を示します。

  1. 他の言語で書かれたコードと対話し、同じコードを JAVA で記述する作業が軽減されるため、コードの冗長性が減るという JAVA の利点が追加されます。
  2. コード全体のパフォーマンスが向上します。コードは他の言語で書かれているため、機械語で動作する場合は JAVA よりも高速になる可能性があります。その後、JAVA プログラムを使用してこのコードを呼び出すことができます。
  3. このアプローチを使用すると、システムコールを直接与えることができます。外部干渉の可能性を減らし、コードの実行速度を向上させます。
  4. JAVA で書かれた任意の駆動コードを使用して、プリロードされたライブラリ (JAVA 以外の言語で書かれた) を動的に呼び出し、JAVA で応答を得ることができます。
  5. これにより、他の言語でのみ使用できるハードウェア リソースに JAVA がアクセスできるようになります。
  6. アプリケーション用にプラットフォーム依存のコードがすでに構築されており、その機能が JAVA でサポートされていない場合、その場合はネイティブ コードを用意し、ネイティブ キーワードを介してこのネイティブ コードを JAVA にリンクできます。

ルール

ネイティブ キーワードのルールは次のとおりです。

  1. ネイティブ キーワードはメソッド名の前に使用されます。
  2. ネイティブ メソッドの宣言には本文がなく、これらのメソッドは JAVA では定義されておらず、C/C++ 言語には存在するため、セミコロンで終わる必要があります。
  3. ネイティブ メソッドを抽象メソッドとして宣言することはできません。
  4. 以前の古いコードが IEEE 754 標準に従って記述されているかどうかは保証できないため (IEEE 浮動小数点演算標準は、電気電子学会によって 1985 年に制定された浮動小数点演算の技術標準です) ) したがって、これらのネイティブ メソッドを strictftp として宣言することはできません。
  5. JAVA は、Java とネイティブ コード間のデータ型の変換など、ネイティブ メソッドを実装するためのルールと宣言を定義する Java ネイティブ インターフェイス (JNI) 仕様を設計します。

結論

ネイティブ キーワードは、ネイティブ言語と JAVA の間のギャップを埋めるものです。ソフトウェアとハ​​ードウェアの対話が既存のコードを使用する方が効率的である場合、これは重要なリンクとして使用できます。新しいアプリケーション コードをゼロから設計する場合に比べて、実装作業が軽減されます。

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

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