JNI是否真的需要接口指针来提供多个版本的JNI函数表

时间:2017-05-26 01:42:31

标签: java java-native-interface virtual-machine

关于JNI规范,它说:

  

JNI接口的组织方式类似于C ++虚函数表或COM接口。使用接口表而不是硬连接函数条目的优点是JNI名称空间与本机代码分离。 VM可以轻松提供多个版本的JNI功能表。例如,VM可能支持两个JNI函数表:

     

执行彻底的非法参数检查,适合调试;   另一个执行JNI规范所要求的最小量检查,因此效率更高。

但它真的需要吗?毕竟,接口指针是指向指针的指针。它会导致更多的业绩衰退。

1 个答案:

答案 0 :(得分:2)

不,他们(Sun)可能会提出一些其他设计。由于历史原因,这个JniEnv与我们在一起,并且确实有助于JNI开销,尽管不是很重要。

这个想法是让Java端控制是否在每个线程的运行时使用调试函数集。我不相信这个想法曾经帮助有人调试他们的原生代码。

请注意,C ++包装器可以显着减少麻烦(当然,这只是语法;开销不会减少)。