在 Java 中包装 C++ 模块
Wrapping C++ modules in Java
我继承了一个项目,最初是在C++
中编写的。
由于实现要求,我需要用基于 JVM 的语言重新编写项目,例如 Java
或 Kotlin
,或者简单地将现有代码包装在 Java
或 [=13] 中=] (RESTful) API.
现有代码库还与非常旧的网络模拟框架纠缠在一起。
因此,我非常倾向于解开模拟框架并使用 JNI 和 SWIG 之类的东西包装 C++
代码以在非模拟环境。
我想知道 JNI 和 SWIG 是否仍然是可用的最佳选择?
任何建议将不胜感激!
使用 JNI(或 SWIG)包装需要 API 的巧妙定义。看到一个很好的解释 here。有一些 C++ 框架可以使 C++ 端的 JNI 操作更容易,在您对引用管理投入过多之前,请尽早考虑它们。根据您所写的内容,可能还需要提供一些 Java 接口 below C++ 层,例如我们在 Android 上使用 Java 网络 APIs,甚至来自 C++ 代码。
我继承了一个项目,最初是在C++
中编写的。
由于实现要求,我需要用基于 JVM 的语言重新编写项目,例如 Java
或 Kotlin
,或者简单地将现有代码包装在 Java
或 [=13] 中=] (RESTful) API.
现有代码库还与非常旧的网络模拟框架纠缠在一起。
因此,我非常倾向于解开模拟框架并使用 JNI 和 SWIG 之类的东西包装 C++
代码以在非模拟环境。
我想知道 JNI 和 SWIG 是否仍然是可用的最佳选择?
任何建议将不胜感激!
使用 JNI(或 SWIG)包装需要 API 的巧妙定义。看到一个很好的解释 here。有一些 C++ 框架可以使 C++ 端的 JNI 操作更容易,在您对引用管理投入过多之前,请尽早考虑它们。根据您所写的内容,可能还需要提供一些 Java 接口 below C++ 层,例如我们在 Android 上使用 Java 网络 APIs,甚至来自 C++ 代码。