8月31日、「J/Invoke 1.0」がリリースされた。J/Invokeは、Javaから容易にWin32 DLLまたはLinux shared libraryを呼び出すことができる製品。「J/Invoke License」の元、配布されており、価格はDeveloper Licenseで300ドルなど。
例えば、Win32 APIの「MessageBox」関数をJavaから呼び出すには、下記のように記述する。
import com.jinvoke.JInvoke;
import com.jinvoke.NativeImport;
public class Example {
@NativeImport(library="User32")
public static native int MessageBox(int hwnd, String text, String caption, int type);
public static void main(String[] args) {
JInvoke.initialize();
MessageBox(0, "This MessageBox is a native Win32 MessageBox", "Caption", 0);
}
}
まず最初に、ネイティブのメソッドと@NativeMethodアノテーションをWin32 APIがどのDLLで存在するかを指定してから一緒に宣言する。この場合、User32.dllはMessageBox機能をエクスポートする。メソッドのシグネチャは、対応するWin32APIの機能のプロトタイプに一致する。次に、J/Invokeランタイムが「JInvoke.initialize();」を実行し初期化を行うという 流れだ。