2009-10-12 79 views
3

我们有一个本地应用程序,我们可以通过JNI-> DLL或通过调用带有命令行参数的EXE来访问。这将是最好的方法?通过JNI/DLL或EXE执行本机代码?

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

EXE路由看起来更简单也更直接(尤其是因为我们没有使用大量的C)。如果您的DLL代码存在内存泄漏或遇到其他问题,我还会用JNI来收集您的JVM。

回答

5

我强烈推荐.exe方法。

  1. ,如果它崩溃,你可以重生中的.exe
  2. 你不会从内存泄漏/损坏等遭受

的缺点是,你可能要.exe文件输出到解析确定结果/状态等,如果不是为此设计的,那么这可能是不切实际的(甚至不可能)。

但是,作为第一种方法,产生.exe是最好的选择。不要忘记consume the stdout/err concurrently,以避免任何.exe挂起问题(一个常见的问题,如果SO问题是相信)。

4

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

每天调用一次.exe 100次很容易。

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