Java 在通过ProcessBuilder调用脚本还是通过JNI直接调用API之间,哪个更好?

Java 在通过ProcessBuilder调用脚本还是通过JNI直接调用API之间,哪个更好?,java,java-native-interface,processbuilder,Java,Java Native Interface,Processbuilder,我有一个C程序,我想从java代码中调用它,我有两个选项:- 调用运行此代码的脚本或 在其API上编写JNI层并使用 以下哪一种方法是首选的?它们的优缺点是什么?通过ProcessBuilder运行可执行文件的最大优点是最大程度的隔离:如果子进程崩溃或损坏内存,这不会影响应用程序。所有其他因素——内存利用率、性能、可维护性——都支持在本机代码的API上使用JNI层 另外一个考虑因素可能是许可。如果C程序遵循GPL,那么JNI方法可能需要对您的整个应用程序进行开源(我不是律师,请先咨询专业人士

我有一个C程序,我想从java代码中调用它,我有两个选项:-

  • 调用运行此代码的脚本或
  • 在其API上编写JNI层并使用

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

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

另外一个考虑因素可能是许可。如果C程序遵循GPL,那么JNI方法可能需要对您的整个应用程序进行开源(我不是律师,请先咨询专业人士,然后再开始这方面的结论)