java.lang.System#loadLibrary

目的
JNIを使って、C言語と連携する

関連クラス

今回のソース
////////////////////  win_version.java  ////////////////////

class win_version
{
	public static void main(String args[])
	{
		System.loadLibrary("win_version");
		windowsVersion();
	}

	public static native void windowsVersion();
}

////////////////////////////////////////////////////////////

////////////////////  win_0005fversion.h  ////////////////////

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class win_0005fversion */

#ifndef _Included_win_0005fversion
#define _Included_win_0005fversion
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     win_0005fversion
 * Method:    windowsVersion
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_win_1version_windowsVersion
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif

////////////////////////////////////////////////////////////

////////////////////  win_version.cpp  ////////////////////

#include <windows.h>
#include "win_0005fversion.h"

JNIEXPORT void JNICALL Java_win_1version_windowsVersion(JNIEnv *jni_env, jclass j_class)
{
	ShellAbout(NULL, "Version Info Dialog from Java!", "Version Info Dialog from Java!", NULL);
}

////////////////////////////////////////////////////////////

Source is here. (ZIP Format, 24380Byte, Shift-JIS)

コンパイル&実行
java win_version

説明
(概略)

JavaからWIN32APIを呼んで、Windowsのバージョンダイアログを出現させるプログラムです。
ネイティブの実装部分は、一行で済んでいるし、
JNIのとっかかりとしては、"Hello, World!"よりは面白いのではないかと思います。

JNIに関する手順は、こちらのページを参考にして下さい。

(サンプルプログラムの説明)

public static native void windowsVersion();
ネイティブメソッドなので、具体的な処理内容はネイティブに依存するため、
ここでは、処理内容の記述はありません。
win_0005fversion.h
javah -jni <class_file>
で生成される、ヘッダファイルです。
元のクラスファイル名が長かったせいか、変な名前になってます。
JNIEXPORT void JNICALL Java_win_1version_windowsVersion(JNIEnv *jni_env, jclass j_class)
生成されたヘッダファイルのプロトタイプ宣言を元に、
関数の処理内容を記述している部分です。