分享

OSGi的特点

 云端素馆 2015-01-29
OSGi已经被用于构建很多非常复杂的系统,比如IDE(Eclipse),应用服务器(GlassFish, IBM Websphere, Oracle/BEA Weblogic, Jonas, JBoss),应用框架(Spring,Guice),工业自动化等等。是什么特点使得OSGi称为这些系统的选择呢?

不妨从几个角度来说一说OSGi的特点。从开发的角度来说,OSGi具有以下特点:
复杂性的降低:基于OSGi的组件模型bundle能够隐藏内部实现,bundle基于服务进行交互。
● 复用:很多第三方的组件可以以bundle的形式进行复用。
● 简单:核心的API总过包括不超过30个类和接口。
● 小巧:OSGi R4框架的实现仅需要300KB的JAR file就足够。在系统中引入OSGi几乎没有什么开销。
● 非侵入式:服务可以以POJO的形式实现,不需要关注特定的接口。

部署和运行的角度来说,OSGi的特点就更多了,OSGi的动态化很大程度体现在系统的部署和运行时。这些特点包括:
● 切合真实运行环境:OSGi框架是动态的,bundle能够进行即时的更新,服务可以根据需要动态增加或者删除。比如一个服务可以是一个网络中的设备,如果一个设备被监测到,则服务可以动态注册;如果设备被移除,则服务能够动态注销。在这样的运行环境中编程将需要耗费大量的开销来处理动态性,但是OSGi帮助开发者处理了绝大多数动态性方面的工作。
● 易于部署:OSGi定义了组件是如何安装和管理的,标准化的管理API使得OSGi能够和现有和将来的各种系统有机的集成。
● 动态更新:这是OSGi被最经常提起的一个特性,即所谓的“热插拔”特性,bundle能够动态的安装、启动、停止、更新和卸载,而整个系统无需重启。
● 适配性:这主要得益于OSGi提供的服务机制、组件可以动态的注册、获取和监听服务,使得系统能够在OSGi环境调整自己的功能。
● 透明:提供了管理API来访问内部状态,因此通常无需去查看日志,能够通过命令行进行调试。
● 版本化:bundle可以版本化,多版本能够共存而不会影响系统功能,解决了JAR hell的问题。(这在开发时也提供了很大的帮助)
● 快速:这得益于OSGi的类加载机制,和JAR包的线性加载不同,bundle委托式的类加载机制,使得类的加载无需进行搜索,这又能有效的加快系统的启动速度。
● 懒加载:OSGi技术采用了很多懒加载机制。比如服务可以被注册,但是直到被使用时才创建。

此外OSGi还有一些其他的优势,比如:
● 安全:OSGi提供了一个安全层,基于Java的安全模型增加了可用性。
● 大公司的支持:OSGi联盟的成员里包含了很多业界有名的IT公司,比如Oracle, IBM, Samsung, Nokia, Progress, Motorola, NTT, Siemens, Hitachi, Deutsche Telekom, Redhat, Ericsson等。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多