什么是OSGi

转载 2012年03月21日 17:15:29

OSGi的历史背景 

什么是OSGi ?

OSGi ( Open Service Gateway Initiative)  字面上的意思是一个公共的服务平台

1999年OSGi联盟成立,它是一个非盈利的国际组织,旨在建立一个开放的服务规范,为通过网络向设备提供服务建立开放的标准,是开放业务网关的发起者。OSGi 联盟的初始目标是构建一个在广域网和局域网或设备上展开业务的基础平台。历史总是具有惊人的相似性,正如Java 诞生于一个嵌入式开发的项目中,却被应用于网络平台的开发,对OSGi 的最早设计也是针对嵌入式应用的,诸如机顶盒、服务网关、手机、汽车等都是其应用的主要环境。后来,由于OSGi 的诸多优秀特性(可动态改变系统行为,热插拔的插件体系结构,高可复用性,高效性等等),它被应用于许多PC 上的应用开发,因此逐步为开发者所知和钟爱。现在人们对OSGi 的理解已经远远不是它字面和初衷所能解释的了,笔者认为称其为一个轻巧的、松耦合的、面向服务的应用程序开发框架更为确切一些。

OSGi 真正被大家所知还是和Eclipse 有密切关系的。Eclipse 很多年都是Java 开发者的首选IDE,相信只要是一个Java 开发者,应该没有人不知道Eclipse 的。在Eclipse 3.0 以前的版本中,它本身有一套自身的插件体系,而该插件体系的设计非常精巧细致,受到许多开发者的推崇,但是Eclipse 基金在Eclipse 3.0 发布的时候,做出了一个大胆的行为,就是将Eclipse 逐步迁移到OSGi 框架中,并自己实现了一个OSGi 开源框架,取名为Equinox,该框架随着每次Eclipse 的发布也会相应的更新。Eclipse 之所以这么做,其一是因为Eclipse 的插件体系与OSGi 的设计思想不谋而合,其二也是因为OSGi 更为规范,其对插件体系的定义也更为完整一些。事实证明Eclipse 在采用OSGi 架构后,无论从性能、可扩展性这两个方面来讲还是从二次开发的角度来定义,都取得巨大的成功。下图展示了Eclipse 与OSGi 框架的关系。


OSGi的特点

   在介绍OSGi框架的特点之前,先简单的介绍一下OSGi框架的各个部分,如下图所示:


每一个在OSGi框架中运行的逻辑单元成为一个Bundle。
  1)Bundle实际是一个符合特定形式的jar文件;
  2)Bundle的功能:可以是抽象,也可以是具体的
     抽象:它不是一个具体的应用,没有完成一些业务功能,而只是暴露了一些接口或者功能供给其他的Bundle使用;
     具体:Bundle可以独立的完成一个功能;
  3)Bundle的状态:installed(安装完成,本地资源成功加载)
                            resolved(依赖关系满足,即该Bundle要么是准备好运行了,要么是已经被停止了)
                            starting(Bundle正在被启动)
                            stopping(Bundle正在被停止)
                            active(Bundle 被激活,正在运行中)
                            uninstalled(Bundle 被卸载了)

OSGi究竟能够给企业应用带来什么?
它究竟有哪些功能值得我们把宝贵的时间投资在上面?
1.基于OSGi的应用程序可动态更改运行状态和行为
2.它是一个稳定高效的系统。OSGi是一个微核的系统,所谓微核是指其核心只有为数不多的几个jar包。基于OSGi框架的系统可分可合,其结构的优势性导致具体的Bundle不至于影响到全局,不会因为局部的错误导致全局系统的崩溃。每个Bundle也只有当服务被调用的时候才会启动,因此性能是较一般的框架高出许多。
3.可复用性强。OSGi框架本身可复用性极强,很容易构建真正面向接口的程序架构,每一个Bundle都是一个独立可复用的单元。但是采用OSGi框架进行企业开发是需要气魄和勇气的,因为当前的软件企业,大多已经积累了许多年,都会遗留下来一些可复用的工具箱程序,而采用OSGi架构需要重新对这些遗留系统进行封装,更有可能的是需要把整个体系架构打散了,进行重新的架构和排列。这个开发成本不能说是不高,但笔者认为是值得的,因为从此以后企业可以利用OSGi独特的特性,将重复的知识轻易的过滤掉。对于新的开发,可以从企业的Bundles库中精简出可复用的模块,量身定做新的Bundles,最大限度的利用了以前的积累,这样的过程更能促使企业竞争力的增强。

OSGi框架介绍

当前的OSGi 开源框架主要包含如下几个:

Equinox

最知名,也是更新最频繁的,由于Eclipse 基金的支持,其功能越来越完善。实现了OSGi R4 规范,并提供很多平台性质的服务,包括:常用功能模块、日志模块、Web服务器模块、Servlet 模块、JSP 解析模块等等。由于其与Eclipse 的天然联系,使得开发基于Equinox 的应用程序变得很简单,推荐采用此框架进行二次开发。

Knopflerfish

很早的,也很优秀的一个OSGi 框架,也实现了OSGi R4 标准。该项目的宗旨在于创建一个易于开发的OSGi 平台,与Equinox 不同之处在于它本身提供一些小应用实例,包括一个可视化控制台等,也提供基于Eclipse 的插件。

Felix

很新的一个OSGi 框架,社区很活跃,更新频率高,是Apache 的开源项目。该项目2007年8月才出1.0 版,也实现了OSGi R4 规范,也提供相关的基础服务和扩展服务功能。



OSGI的基本概念[自己的理解]

    OSGI ,是一种规范,目前最新版本是R4版本,这个规范的目的是为了使java系统具有更好模块化,动态性,热插拔性能。    OSGI一个很重要的应用就是与Eclipse的结合,在Eclips...
  • stona126
  • stona126
  • 2010年11月30日 22:39
  • 2190

什么是OSGI

       OSGi是Open Service Gateway Initiative的简称,该组织建立于1999年,是一个非赢利机构,旨在建立一个开放的服务规范,为通过网络向设备提供服务建立开放的标...
  • teamlet
  • teamlet
  • 2007年04月24日 15:07
  • 2756

什么是OSGI

 OSGi是Open Service Gateway Initiative的简称,该组织建立于1999年,是一个非赢利机构,旨在建立一个开放的服务规范,为通过网络向设备提供服务建立开放的标准。OSGI...
  • nomigd
  • nomigd
  • 2006年12月19日 20:15
  • 800

什么是OSGi

什么是OSGi
  • wengyupeng
  • wengyupeng
  • 2010年08月13日 23:50
  • 1576

什么是osgi

osgi干什么事? modulization模块化。 模块化。。好模糊。。
  • chenshangsong
  • chenshangsong
  • 2014年04月06日 08:47
  • 337

【OSGI】1.初识OSGI-到底什么是OSGI

目前,业内关于OSGI技术的学习资源或者技术文档还是很少的。我在某宝网搜索了一下“OSGI”的书籍,结果倒是有,但是种类少的可怜,而且几乎没有人购买。 因为工作的原因我需要学习OSGI,所以我不得不想...
  • u013517797
  • u013517797
  • 2016年03月10日 17:51
  • 31415

什么是OSGI以及OSGI入门

OSGI框架简介   “OSGi service platform是一个开放并且提供统一接口标准的体系框架,基于这个体系框架,服务提供商,程序开发人员,软件提供商,服务网管运营商,设备提供商能够协调地...
  • zouc816
  • zouc816
  • 2010年09月26日 10:00
  • 581

osgi介绍(一)什么是osgi

过于的一年多,在和很多it届的同学及朋友见面时,他们总会问我最近在做什么。“OSGi!”,我不加思索的回答。到目前为止,对这个单词得到的反应都没有超出“这是什么?”,“我没有听说过”,“噢,能具体点吗...
  • immcss
  • immcss
  • 2011年03月24日 12:28
  • 616

osgi 学习系列(五)spring dm

Spring-OSGi默认加载解析META-INF/spring目录下的xml文件作为spring bean配置文件,也可通过在MANIFEST.MF中增加Spring-Context来指定sprin...
  • ferry_passion
  • ferry_passion
  • 2012年05月27日 21:02
  • 9218

OSGI传统注册式服务与声明式服务

上一篇博文中我们编写了第二个简单的osgi的example,并编写了一个接口DictionaryService,并在Activator这个Bundle中实现了这个interface,并在start启动...
  • u012734441
  • u012734441
  • 2016年06月27日 07:51
  • 3732
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:什么是OSGi
举报原因:
原因补充:

(最多只允许输入30个字)