CTK 插件框架CTK插件框架是第三个使用C++重写类OSGI的组件框架,由德国癌症研究中心医药和生物信息技术部门开发的。第一个版本是在2007/2008年期间开发的一个更大框架OpenCherry的一部分,主要是提供了基于Eclipse RCP的C++组件模型(类似于Equinox)。项目后来被命名为BlueBerry,成为MITK应用程序框架的基础(Blueberry自身是一个真正的应用程序平台,并不是针对特定应用的),Blueberry中OSGI相关的C++代码在2009年被重写,并形成了现在的CTK插件框架。 CTK插件框架是基于QT core库的,实现了几乎完整的OSGI框架API。它使用了QT的插件系统,资源系统和信号、槽机制来支持所有的OSGI框架功能实现,此外,CTK也提供了一些OSGI可选服务的实现。
nOSGInOSGI是另一个C++实现的针对Posix系统的OSGI项目。根据这个博客的评论显示,该项目最早在2009年开发的。该项目的作者也写了一份非常棒的论文,阐述了将OSGI转换为一个原生系统(POSIX)的可行性。 nOSGI尤其专注于建模互相捆绑软件包的依赖关系(见前面论文中C++软件包的定义),使用了在运行时通过修补的DSO的ELF头。同时,该项目也提供了一个OSGI的控制台来和运行环境交互。
Celix2010年,Celix作为Apache孵化器的一个项目被创建(提案)。最初是由Luminis用C开发的一个OSGI实现。Celix主要关注尽可能参照OSGI的API实现,并且实现JAVA OSGI 组件和使用Celix原生C组件的互操作性问题。 Celix同样也提供了一个OSGI控制台和一个日志服务实现,另外,Celix项目团队还试图形成一个C\C++ OSGI开发社区,并号召开源社区来响应这些项目(见邮件列表)。
对比我会提供上述项目的一个高层的比较。请注意,尽管我尽力收集准确的数据,不过仍然可能存在不准确和错误之处。这些数据来源于以下地方:
下面的表格列举了各项目支持的平台,许可证信息,实现语言和创建日期(根据目前能确定的信息)。
这五个OSGI框架实现在很多方面存在差异,下面的表格会总结这些项目的下述方面特性:
1.线程安全性需要用户提供一个定制的线程策略类作为启动的一个模版参数传递进去。 2.仅仅支持注册的服务{敏感词} |