快速(以开发人员的方式)使用Java的大量C++代码的方式

jb.*_*jb. 3 c++ java interop root-framework

背景:我们正在设计一个物理应用程序,它将进行大量的数据分析,但我们的重点是整合物理电子设备.

基本上我希望能够用Java编写的C++库编写的root(它是用C++编写的CERN的大数据分析库).基本上从Java中使用ROOT类的能力(并且不会浪费太多时间来编写JNI包装器)对我们来说是一个显而易见的事情(如果它很难,我们很可能会使用Qt).

我可以想到以下方法

  • JNI - 正如我所说 - 我们不想为每个班级写包装...
  • JNA - JNA不提供C++映射,但只提供C.
  • SWIG - 我没有使用它,但听说它很难使用.

其他可能很重要的事情:我们可以访问根源代码,但我们不想改变它.我们希望结果是可移植的.我们想坚持免费图书馆.正如我所说 - 我们可以从一开始就使用大量的ROOT代码,而不用大惊小怪.

小智 6

编写一个小型C++应用程序,它从stdin读入输入并将输出写入stdout.然后从java应用程序中运行该过程并从stdout读取输出.

这是没有JNI的最佳方式(这很容易)