Java 通过JNI/DLL或EXE执行本机代码?

Java 通过JNI/DLL或EXE执行本机代码?,java,c,java-native-interface,native,Java,C,Java Native Interface,Native,我们有一个本机应用程序,可以通过JNI->DLL或通过调用带有命令行参数的EXE来访问。哪种方法最好 我们将每天调用这个方法大约100次。性能并不是非常重要。这个本地应用程序是由我们公司以外的一个团队开发的,因此我们对代码不太熟悉(尽管我们拥有它) EXE路径似乎更简单、更直接(特别是我们没有使用太多的C)。我还收集到,如果DLL代码出现内存泄漏或遇到其他问题,JNI可能会使JVM崩溃 对于这种情况,我会调用.exe,主要是因为在这种情况下,不稳定的应用程序无法破坏JVM 每天调用一个.exe

我们有一个本机应用程序,可以通过JNI->DLL或通过调用带有命令行参数的EXE来访问。哪种方法最好

我们将每天调用这个方法大约100次。性能并不是非常重要。这个本地应用程序是由我们公司以外的一个团队开发的,因此我们对代码不太熟悉(尽管我们拥有它)


EXE路径似乎更简单、更直接(特别是我们没有使用太多的C)。我还收集到,如果DLL代码出现内存泄漏或遇到其他问题,JNI可能会使JVM崩溃

对于这种情况,我会调用.exe,主要是因为在这种情况下,不稳定的应用程序无法破坏JVM

每天调用一个.exe 100次,速度很快


另一方面,如果.dll提供了一个很好的API,那么如果出现问题,使用它可能会让您有更好的机会诊断问题。

我强烈建议使用.exe方法

  • 如果它崩溃,您可以重新启动.exe
  • 您不会遭受内存泄漏/损坏等问题
  • 缺点是您可能必须解析.exe输出以确定结果/状态等,如果它不是为此而设计的,那么这可能是不切实际的(甚至是不可能的)

    但是作为第一种方法,生成.exe是一种可行的方法。不要忘记避免任何.exe挂起的问题(如果是这样的话,这是一个常见的问题)