在通过ProcessBuilder调用脚本或直接通过JNI调用apis之间,哪个更好?

时间:2015-03-11 06:50:19

标签: java java-native-interface processbuilder

我有这个C程序,我想从我的java代码调用,我有两个选项: -

  • 调用运行此代码或
  • 的脚本
  • 在api上写一个JNI层并消耗。

首选哪种方法?它们的优点和缺点是什么?

1 个答案:

答案 0 :(得分:2)

通过ProcessBuilder运行可执行文件的最大优势是最大程度的隔离:如果子进程崩溃或破坏内存,这不会影响您的应用程序。所有其他因素 - 内存利用率,性能,可维护性 - 都支持在本机代码的API上使用JNI层。

另外一个考虑因素可能是许可。如果C程序遵循GPL,那么JNI方法可能需要开源整个应用程序(我不是律师,请先咨询专业人员,然后才能在此领域得出结论)