Java Native Interface
出典: フリー百科事典『ウィキペディア(Wikipedia)』
(JNI から転送)
Java Native Interface (JNI) は、Javaプラットフォームにおいて、Javaで記述されたプログラムと、他の言語(たとえばCやC++など)で書かれた、実際のCPUの上で動作するコード(ネイティブコード)とを連携するためのインタフェース仕様である。Java言語からネイティブコードを利用するためのABIと、逆にネイティブコードからJavaのバイトコードを動作させるためのバーチャルマシンを利用するためのAPIの2つから成る。
JNIを使うことで、Java言語のバーチャルマシンで動作させるには処理速度の面で不利とされる計算量の多いプログラムを部分的にネイティブコードに置き換えて高速化したり、標準クラスライブラリからはアクセスできないオペレーティングシステムの機能を利用するプログラムを、あたかも通常のJavaクラスのように呼び出したりできるようになる。
更に、最近流行のJRuby等Javaで記述されたスクリプト言語からも同じように呼び出せるので、非常に強力である。
JNIによる、Javaバーチャルマシンからネイティブコードの呼び出しは、バーチャルマシンの実行環境の一貫性を保つために、通常のJavaプログラムの実行時とは異なる例外的なメモリ管理や排他制御を必要とする場合があり、しばしばプログラムの実行速度の低下を招くことがある。そのため、単純にJNIを利用することでアプリケーション性能を改善できると言うことはできない。
このJNIはEclipseで用いられているSWTにも使われている。
[編集] 関連項目
- 外部関数インターフェイス
- Java Native Access: JNI を用いずにネイティブコードを呼び出すためのライブラリ
- P/Invoke: .NET_Frameworkにおける JNI と等価の仕組み
- SWIG: 多言語に対応したインターフェイス生成ツールで、C/C++のライブラリ用の JNI コードを生成する

