我有两个选择 - 我可以使用JNI或使用Runtime.exec来执行C ++库。
C ++程序是CPU密集型并且长时间运行,即某些调用可能需要几个小时才能返回。
每种的优点和缺点是什么? 我应该采用哪种方法?
答案 0 :(得分:5)
如果您需要与C ++库交互,请转到JNI。
如果它只是一个你想要调用的独立程序(也许可以获取输出),那么Runtime.exec()
就会简单得多。
答案 1 :(得分:2)
您是否考虑过JNA作为第三种选择?
来自JNA网站:
JNA为Java程序提供了轻松访问 到本机共享库(DLL上) Windows)没有写任何东西,但 Java代码 - 没有JNI或本机代码 需要。这个功能是 与Windows的平台/调用相当 和Python的ctypes。访问是动态的 在运行时没有代码生成。
有关简介,请参阅他们的getting started指南。
答案 2 :(得分:0)
使用JNI可能会限制您从32位移动到64位的能力。您可能还发现必须调整应用程序内存设置。
除非你知道C ++的写法有多好,否则它会让你的应用更加不稳定。你很幸运,C ++位需要几个小时 - 所以只需在外部调用它。