【问题标题】:Execute native code via JNI/DLL or EXE?通过 JNI/DLL 或 EXE 执行本机代码?
【发布时间】:2010-12-06 01:54:42
【问题描述】:

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

我们每天将调用此方法大约 100 次。性能不是很重要。这个原生应用是由我们公司以外的一个团队开发的,所以我们对代码不太熟悉(尽管我们确实拥有它)。

EXE 路径似乎更简单、更直接(尤其是在我们没有大量使用 C 的情况下)。此外,如果您的 DLL 代码存在内存泄漏或遇到其他一些问题,我还会使用 JNI 收集您的 JVM 崩溃。

【问题讨论】:

    标签: java c java-native-interface native


    【解决方案1】:

    我强烈推荐 .exe 方法。

    1. 如果崩溃,您可以重新生成 .exe
    2. 您不会遭受内存泄漏/损坏等问题。

    缺点是您可能必须解析 .exe 输出以确定结果/状态等,如果它不是为此而设计的,那么这可能是不切实际的(甚至是不可能的)。

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

    【讨论】:

      【解决方案2】:

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

      每天调用 .exe 100 次就足够快了。

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

      【讨论】:

        猜你喜欢
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多