我正在寻找从 java 调用现代 C++ 11/14 代码的最佳方法(从 C++ 回调到 java)。在 java 和 C++ 11/14 之间获得互操作性的最佳/最简单/最快的性能方式是什么?我已经用 python 和 C++ 编程了一段时间,并且开始依赖pybind11。我正在寻找类似于(或优于)pybind11 for java 的东西。
我知道 jni 和 jna。但是 jni 太低级、乏味且容易出错。根据这篇博文, “JNA 比 JNI 慢得多”。那篇博客文章使用了bridj,但在撰写这篇文章后的三年里,bridj 似乎已经从“一个相对年轻的项目”变成了从那时起只有两次提交的项目。
我也知道 swig,但至少对于 python,我更喜欢 pybind11 提供的直接包装,而不是 swig 的包装器生成器方法。我遇到过jni.hpp和javacpp。jni.hpp 看起来最像 pybind11,但它看起来不成熟,在 java 社区中没有广泛使用。javacpp 是最接近于 python/c++ 的 pybind11 的 java/c++ 吗?
我很感激任何指导。
(对于那些将这个问题作为 7 岁以上问题的副本结束的人来说,如何从 Java 调用 C++?,我的问题是询问当前使用最新 C++ 语言改进支持 java/c++ 互操作性的最佳库自 2011 年以来已发生。请重新开放。)