我有两个选择--我可以使用JNI或者使用Runtime.exec来执行C++库。
C++程序是CPU密集型且长时间运行,即某些调用可能需要几个小时才能返回。
每种方法的优缺点是什么?我应该选择哪种方法?
发布于 2009-04-23 17:48:26
如果需要与C++库交互,请使用JNI。
如果您只想调用一个独立的程序(也许还想获取输出),那么Runtime.exec()要简单得多。
发布于 2009-04-23 18:46:30
您是否考虑过将JNA作为第三种选择?
从JNA站点执行以下操作:
Java为
程序提供了对本机共享库(Windows上的DLL)的轻松访问,而不需要编写任何代码--不需要JNI或本机代码。此功能可与Windows的平台/调用和Python的ctype相媲美。访问在运行时是动态的,不需要生成代码。
有关介绍,请参阅他们的getting started指南。
发布于 2009-04-23 22:04:52
使用JNI可能会限制您从32位迁移到64位的能力。您可能还会发现您还必须调整应用程序内存设置。
除非你知道C++的东西写得有多好--否则它会让你的应用更加不稳定。幸运的是,C++位需要几个小时-所以只需在外部调用它即可。
https://stackoverflow.com/questions/782827
复制相似问题