文章目录

接触了一段时间的OSGi,现在也来谈一谈感想

OSGi全称Open Service Gateway Initiative ,它作为一个规范提供了开放和通用的架构,使得使用者能统一的开发,管理和部署服务.
以前OSGi主要是为嵌入式开发提供规范.但它优异的架构也使它在其他地方有所建树…最著名的就是Eclipse了,它的基础架构Equinox就是OSGi的规范工程.
现在Dynamic Module System For Java—JSR 291也通过了复审..可能过段时间JRE就直接集成OSGi了..

OSGi提供给人们一个模块设计的概念,将各种功能及服务做成Bundle即可实现热拔插.

OSGi还有一个主要的特性就是它的动态化,它可以动态的改变系统的行为..通过对不同Bundle的启动和关闭来达到不同的实现效果.

而OSGi采用的是微内核技术..以至于它能有一个稳定,健壮的系统.Bundle的崩溃不会影响到整个系统.而且它的动态加载机制,使其启动时间大幅缩短..BMW的汽车管理系统就是用的OSGi,而他启动只需要3.5秒.可见他的效率也是不差的.

综合以上的特点..可以看出OSGi提供了一个模块设计,开发的规范
这样的设计能带来更好的重用,更低的耦合
而他的动态化,也实现了热部署,热升级,无须重启任何东西,就可实现一切

但是我们也要看到OSGi不足的地方..
由于OSGi最初为嵌入式系统设计,他的Http Service很单薄,只提供了Servlet和静态资源的注册.还不能满足企业级的应用(一个OPENGOSS的开源项目扩充了OSGi的定义,已经能使它较为完整的运行web应用),以及OSGI对分布式部署和跨模块的事务支持都力不从心.而且由于设计理念的不同,将其他系统移植至OSGi下也会很困难.
现在基于Equinox的B/S应用是修改了jetty来作为http service,如其他的商业容器还不能和OSGi直接集成,不过现在IBM和BEA都在推广OSGi,相信不久的将来websphere和weblogic都将可以作为OSGi的http service.

 

文章目录