使用Java Native Interface的缺点

Joh*_*nna 9 java java-native-interface

我无法获得使用JNI的这两个缺点.我想更多地了解他们:

  • 很难在本机代码中调试运行时错误

  • JNI代码中的错误会占用整个JVM,并且不提供任何正常恢复机制

Gle*_*len 26

很难调试

  • 您需要一个C/C++调试器来调试本机代码.不可能轻易地从Java转向C/C++代码.(尽管可以同时调试它们.我已经使用Eclipse和CDT插件完成了它,但这很痛苦)

JNI中的错误

  • 本机库中的错误C/C++代码可能/将导致JVM无法恢复的核心转储/分段错误,因此整个应用程序崩溃.


Abe*_*los 13

您将失去使用Java的优势之一,您的应用程序不再是平台独立的,并且还有许多其他问题:也许您将支持Windows的DLL和Linux的.so文件,每个都与他们的自己的编译器,不同的调试工具,不同的依赖关系和可能不同的错误,构建过程的复杂性,测试代码等等.

  • 更糟糕的是:支持windows(32,64),linux(32,64,不同的发行版),solaris8,9,10(sparc,sparcv9,32,64)...尝试为所有这些编写CORRECT跨平台本机代码.欢迎来到makefile地狱. (4认同)