JavaA2Z

KAB-studio > プログラミング > JavaA2Z > nativeとは

native

日本語 固有
英語 native
ふりがな ねいてぃぶ
フリガナ ネイティブ

解説

Java以外の機能を実するための予約語
Javaでは基本的にJ2SE実装されている機能しか実できない。J2SE以外の、たとえばOS固有の機能を実できるようになると、そのプログラムはそのOSでしか実できなくなるためである。Javaは基本的にOSに関係なく実できる言語だが、それができなくなってしまうためである。
 
その、イレギュラーな「OS固有の機能」を実するための予約語がnativeである。
nativeはメソッドに付け、abstractメソッドのように実装を付けないようにする。
コンパイル後、javahコマンドでクラスファイルを指定すると、nativeメソッド宣言が記述されたC++言語ヘッダーファイルが生成される。
nativeメソッド実装は、C++言語で記述する。関数宣言ヘッダーファイルのものを使用する。
出力ファイルは、Windows系であればDLL、UNIX系であれば.soファイル形式で出力する。
これらをjavaコマンドから参照できる位置にコピーすることで関数呼び出すことができる。
 
この機能を利用することで、Javaの限界を超える事ができる。
ただし、DLLや.soファイルも配布する必要がある、OSが変わると実できない、といった問題点があり、あまり使用は勧められない。実際、たいがいのことはJavaで実現できる。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java

public class Sample
{
    public static void main( String[] args )
    {
        // Sample.dllを読み込みます。
        System.loadLibrary( "Sample" );

        Sample sample = new Sample();
        // DLLのviewOkDialog()関数を呼び出します。
        sample.viewOkDialog();
    }

    /**
    *   nativeメソッド。
    *   このメソッドは、実際にはDLLにある関数です。
    */
    public native void viewOkDialog();
}


// WindowsのDLLを呼び出す場合の手順。

1.上記のSample.javaをコンパイルしてください。

2.Sample.classファイルがあるディレクトリでjavah Sampleを実行してください。
   Sample.hというヘッダーファイルが作られます。

3.Visual C++でWin32 Dynamic-Link Libraryプロジェクトを作ってください。
 プロジェクト名は「Sample」にしてください。

4.プロジェクトのディレクトリにSample.hヘッダーファイルをコピーしてください。

5.Sample.cppソースファイルを作り、以下のコードを書いてください。

// Sample.cpp

#include "windows.h"
#include "Sample.h"

extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
    return TRUE;
}

/*
    Javaから呼び出す関数。
    関数のシグネチャーはSample.hのものをそのまま持ってきています。
*/
JNIEXPORT void JNICALL Java_Sample_viewOkDialog(JNIEnv *, jobject)
{
    MessageBox( NULL, "OK?""テストダイアログ", MB_OK );
}

6.メニューの「プロジェクトの設定」-「C/C++」-「プリプロセッサ」の「インクルード ファイルのパス」に以下のパスを書いてください(ただし、J2SEのインストールディレクトリがC:\Java\j2sdk1.4.1_01の場合)。

C:\Java\j2sdk1.4.1_01\include,C:\Java\j2sdk1.4.1_01\include\win32

7.ビルドしてください。

8.できたSample.dllをSystem32ディレクトリにコピーしてください。

9.あとはJavaの方のSampleクラスを実行してください。これでダイアログが表示されるはずです。
// Sample.java

public class Sample
{
    public static void main( String[] args )
    {
        // Sample.dllを読み込みます。
        System.loadLibrary( "Sample" );

        Sample sample = new Sample();
        // DLLのviewOkDialog()関数を呼び出します。
        sample.viewOkDialog();
    }

    /**
    *   nativeメソッド。
    *   このメソッドは、実際にはDLLにある関数です。
    */
    public native void viewOkDialog();
}


// WindowsのDLLを呼び出す場合の手順。

1.上記のSample.javaをコンパイルしてください。

2.Sample.classファイルがあるディレクトリでjavah Sampleを実行してください。
   Sample.hというヘッダーファイルが作られます。

3.Visual C++でWin32 Dynamic-Link Libraryプロジェクトを作ってください。
 プロジェクト名は「Sample」にしてください。

4.プロジェクトのディレクトリにSample.hヘッダーファイルをコピーしてください。

5.Sample.cppソースファイルを作り、以下のコードを書いてください。

// Sample.cpp

#include "windows.h"
#include "Sample.h"

extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
    return TRUE;
}

/*
	Javaから呼び出す関数。
	関数のシグネチャーはSample.hのものをそのまま持ってきています。
*/
JNIEXPORT void JNICALL Java_Sample_viewOkDialog(JNIEnv *, jobject)
{
    MessageBox( NULL, "OK?", "テストダイアログ", MB_OK );
}

6.メニューの「プロジェクトの設定」-「C/C++」-「プリプロセッサ」の「インクルード ファイルのパス」に以下のパスを書いてください(ただし、J2SEのインストールディレクトリがC:\Java\j2sdk1.4.1_01の場合)。

C:\Java\j2sdk1.4.1_01\include,C:\Java\j2sdk1.4.1_01\include\win32

7.ビルドしてください。

8.できたSample.dllをSystem32ディレクトリにコピーしてください。

9.あとはJavaの方のSampleクラスを実行してください。これでダイアログが表示されるはずです。

この単語を含むページ

「みだし」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/06/06
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。