之前一直不太清楚OSGI和eclipse之间的关系,今天上论坛搜了一点关于两者之间关系的资料,总结如下:

OSGi 技术是面向Java的动态模型系统。OSGi服务平台向Java提供服务,这些服务使Java成为软件集成和软件开发的首选环境。 Java提供在多个平台支持产品的可移植性。OSGi技术提供允许应用程序使用精炼、可重用和可协作的组件构建的标准化原语。 这些组件能够组装进一个应用和部署中。

OSGi服务平台提供在多种网络设备上无需重启的动态改变构造的功能。 为了最小化耦合度和促使这些耦合度可管理,OSGi技术提供一种面向服务的架构,它能使这些组件动态地发现对方。OSGi联盟已经开发了为例如象HTTP 服务器、配置、日志、安全、用户管理、XML等很多公共功能标准组件接口。这些组件的兼容性插件实现可以从进行了不同优化和使用代价的不同计算机服务提供 商得到。然而,服务接口能够基于专有权基础上开发。

因为OSGi技术为集成提供了预建立和预测试的组件子系统,所以OSGi技术使你从改善产品上市时间和降低开发成本上获益。因为这些组件能够动态发布到设备上,所以OSGi技术也能降低维护成本和拥有独一无二的新的配件市场机会。

OSGi规范的核心组件是OSGi框架。这个框架为应用程序(被叫做组件(bundle))提供了一个标准环境。整个框架可以划分为一些层次:

  • L0: 运行环境
  • L1: 模块
  • L2: 生命周期管理
  • L3: 服务注册 

    还有一个无处不在的安全系统渗透到所有层。 

OSGi是Java模块化标准,相当于MS的ActiveX一样。纯粹的Java只有包(package)这种逻辑上的封装工具,jar存包上则完全不设置物理隔断,OSGi下jar包和jar包是隔绝的(各自独立自主的)。

osgi是个动态服务框架,eclipse是这个思想的一个完美的实现,名字叫Equinox ,eclipse plugin就是基于osgi开发的,这就是为什么,你添加个插件,eclipse不用重启的原因,还有基于eclipse的rcp开发 也是完全基于这种思想。

OSGI,全名Open Service Gateway Initiative,相当于一个规范的平台,任何满足这个平台的东西都可以应用在它上面,宝马的车载控制系统都是用的OSGI框架,而最具有代表性的就是Eclipse。

要想了解OSGI,先弄清楚bundle的概念,eclipse的plugin相当于一个bundle,但并非所有的bundle都是plugin。你可以用OSGI重写web程序,来实现软件的“热插拔”


ps:向大家推荐一本书:《eclipse插件开发学习笔记》,里面讲得很细致,大家可以去http://item.taobao.com/item.htm?id=19432620701购买扫描版的,还有源码。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐