【问题标题】:Is there a non Java alternative to OSGi?OSGi 有非 Java 替代品吗?
【发布时间】:2012-03-04 05:11:59
【问题描述】:

是否有类似 OSGi 的基于 C/C++ 的框架? 我有大量的 C/C++ 遗留代码,这些代码太昂贵而无法移植到 Java。

【问题讨论】:

  • 一种选择是在 Java 中使用 OSGi使用您的 C/C++ 代码——例如,通过 SWIG、JNA 或 JNI。
  • OSGi 框架支持 JNI 库,包括根据需要通过卸载和重新加载来更新它们。
  • 尽管在 OSGi 中使用 JNI 和本机库很容易,但它有一个巨大的缺点。如果由于某种原因,本机代码崩溃,整个 VM 也会崩溃。这可能是不使用 JNI 的原因。在这种情况下,使用带有远程服务的 Apache Celix 之类的解决方案可能更有用。

标签: java c++ osgi


【解决方案1】:

由于 OSGi 现在是一个包含许多标准、子标准等的完整生态系统 - 严格的答案是:不,因为它依赖于 Java 特有的许多东西(字节码、类加载、垃圾收集......)不是 C/C++ 的一部分,甚至无法模拟 - 特别是对于遗留代码。

但是,如果您告诉我们您对 OSGi 的哪些部分感兴趣,尤其是您认为哪些部分与您的代码无关,您可能会得到答案。

同时您可以在本站浏览其他一些类似的问题或使用搜索:

【讨论】:

【解决方案2】:

看看Apache Celix,它为您提供了一个类似 OSGi 的 C 模块框架,并通过 OSGi 的远程服务机制结合了 C/Java 互操作性。

【讨论】:

  • 我们(Apache Celix)目前正在研究的一件事是,如何扩展 Celix 以便以自然的方式使用 C++。目前 Celix 只专注于 C.
【解决方案3】:

以下是我所知道的(仍然有效的)类似 OSGi 的 C/C++ 框架的列表:

  • Apache Celix [语言:C,许可证:Apache 许可证 2.0]
  • SOF [语言:C++,许可证:未知]
  • CTK [语言:C++,许可证:Apache 许可证 2.0]
  • nOSGi [语言:C++,许可证:GPLv3]
  • Poco OSP [语言:C++,许可证:商业]
  • CppMicroServices [语言:C++,许可证:Apache 许可证 2.0]

blog post 提供了有关这些框架的高级概述。

【讨论】:

  • 我希望 nOSGI 基于 .NET...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 2011-07-17
  • 2017-03-05
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多