java - 通过 ProcessBuilder 调用脚本和直接通过 JNI 调用 api 哪个更好?

标签 java java-native-interface processbuilder

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

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

首选这些方法中哪一种?它们的优缺点是什么?

最佳答案

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

另一个考虑因素可能是许可。如果 C 程序遵循 GPL,那么 JNI 方法可能需要开源您的整个应用程序(我不是律师,请在该领域下结论之前咨询专业人士)

关于java - 通过 ProcessBuilder 调用脚本和直接通过 JNI 调用 api 哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28980261/

相关文章:

java - Spring中的异常处理

makefile - 定义生成共享库的 makefile 规则

java - 从Java执行外部程序(使用cmd,Windows)

java - 是否可以使用swagger的注释配置spring-security?

java - 使用 Java 和 JavaFX 设置 WebView 中的文本颜色

java - 这是否意味着应用程序的内存使用量与应用程序的大小相同

java - Android JNI GetMethodID() 失败

java - 使用 Delphi 中的 java 类

java - 从 Java 中的 ProcessBuilder 调用时 EXE 崩溃

Java 在新终端 (mac osx) 中开始运行命令 - 进程生成器未正确运行 osascript