Auf JNI-Spezifikation zur Verfügung zu stellen wirklich Zeiger benötigen Schnittstelle, heißt es:Hat JNI mehrere Versionen von JNI Funktionstabellen
Die JNI-Schnittstelle wie eine C++ organisiert virtuelle Funktionstabelle oder eine COM-Schnittstelle. Der Vorteil der Verwendung einer Schnittstellentabelle anstelle von festverdrahteten Funktionseinträgen besteht darin, dass der JNI-Namespace vom systemeigenen Code getrennt wird. Eine VM kann problemlos mehrere Versionen von JNI-Funktionstabellen bereitstellen. Zum Beispiel kann die VM zwei JNI-Funktionstabellen unterstützen:
man führt gründliche unzulässige Argumentprüfungen durch und ist zum Debuggen geeignet; der andere führt die minimale Menge an Prüfungen durch, die von der JNI-Spezifikation benötigt wird und ist daher effizienter.
Aber ist es wirklich nötig? Immerhin ist der Schnittstellenzeiger Zeiger auf Zeiger. Es kostet mehr Leistungsrezession.
Verglichen mit dem Aufwand beim Überqueren der JVM/JNI-Grenze und dem Ausführen eines JNI-Funktionsaufrufs ist die zusätzliche Indirektion völlig unbedeutend. – EJP