の複数のバージョンを提供するために、ポインタをインタフェースする必要がありません、それは言う:はJNIが本当にJNI関数テーブルJNI仕様で
JNIインタフェースは、C++の仮想関数テーブルまたはCOMインタフェースのように構成されています。ハードワイヤードの関数エントリではなく、インタフェーステーブルを使用する利点は、JNI名前空間がネイティブコードと分離されることです。 VMは、複数バージョンのJNI関数テーブルを簡単に提供できます。たとえば、VMは2つのJNI関数テーブルをサポートすることができます。
完全な不正な引数チェックを行い、デバッグに適しています。 は、JNI仕様で必要とされる最小限の検査を実行するため、より効率的です。
本当に必要ですか?結局のところ、インタフェースポインタはポインタへのポインタです。それはより多くのパフォーマンスの後退を要する。
JVM/JNI境界を越えてJNI関数呼び出しを実行するオーバーヘッドと比較すると、余分な間接参照は全く重要ではありません。 – EJP