Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JNI vs Runtime.exec() 我有两个选项——我既可以使用JNI,也可以使用RunTime.Excel来执行C++库。 > C++程序是CPU密集型的,并且长时间运行,即一些调用可能需要几个小时才能返回。_Java_Java Native Interface - Fatal编程技术网

Java JNI vs Runtime.exec() 我有两个选项——我既可以使用JNI,也可以使用RunTime.Excel来执行C++库。 > C++程序是CPU密集型的,并且长时间运行,即一些调用可能需要几个小时才能返回。

Java JNI vs Runtime.exec() 我有两个选项——我既可以使用JNI,也可以使用RunTime.Excel来执行C++库。 > C++程序是CPU密集型的,并且长时间运行,即一些调用可能需要几个小时才能返回。,java,java-native-interface,Java,Java Native Interface,每种方法的优缺点是什么? 我应该选择哪种方法?< P>如果你需要与C++库交互,就去JNI。< /P> 如果它是一个独立的程序,您只想调用(或者获取输出),Runtime.exec()要简单得多。您是否考虑过作为第三个选项 从JNA站点: JNA提供了Java程序易于访问 到本机共享库(上的DLL) (Windows)不写任何东西,但 Java代码不支持JNI或本机代码 必修的。此功能是 与Windows的平台/调用相当 以及Python的ctypes。访问是动态的 在运行时不生成代码 有关介绍

每种方法的优缺点是什么?
我应该选择哪种方法?

< P>如果你需要与C++库交互,就去JNI。< /P> 如果它是一个独立的程序,您只想调用(或者获取输出),
Runtime.exec()
要简单得多。

您是否考虑过作为第三个选项

从JNA站点:

JNA提供了Java程序易于访问 到本机共享库(上的DLL) (Windows)不写任何东西,但 Java代码不支持JNI或本机代码 必修的。此功能是 与Windows的平台/调用相当 以及Python的ctypes。访问是动态的 在运行时不生成代码


有关介绍,请参阅他们的指南。

使用JNI可能会限制您从32位移动到64位的能力。您可能还会发现,您还必须调整应用程序内存设置


除非你知道C++的编写方法有多好,否则会让你的应用程序变得更不稳定。你很幸运,C++位需要几个小时,所以只需要在外部调用。< /P>嗨,米迦勒,你能提供更多的信息吗?关于对速度和内存使用的影响。另外,对应用程序稳定性的影响如何。