Open Service Gateway Initiative
面向Java的动态模型系统
OSGi服务平台向Java提供服务,这些服务使Java成为软件集成和软件开发的首选环境。
OSGi服务平台提供在多种网络设备上无需重启的动态改变构造的功能。
OSGi规范的核心组件是OSGi框架。这个框架为应用程序(被叫做组件(bundle))提供了一个标准环境。
整个框架可以划分为一些层次:
L0:运行环境 : Java环境的规范。
L1:模块 : 定义类的装载策略。
L2:生命周期管理 : 增加了能够被动态安装、开启、关闭、更新和卸载的bundles。
L3:服务注册 : 提供一个面向bundles的考虑到动态性的协作模型。
还有一个无处不在的安全系统渗透到所有层。
每一个在OSGi 框架中运行的逻辑单元称为一个Bundle,Bundle 实际是一个符合特定形式的jar 文件。
每一个Bundle 的功能可以是抽象的也可以是具体的。
所谓抽象,就是它不是一个具体的应用,没有完成一些业务功能,而只暴露了一些接口或者功能给其他的Bundle 使用;
所谓具体,就是该Bundle 可以独立的完成一个功能,例如连接数据库,获取数据等等。
Bundle 有六种状态,分别是:
installed(安装完成,本地资源成功加载),
resolved(依赖关系满足,即该Bundle 要么是准备好运行了,要么是已经被停止了),
starting(Bundle 正在被启动),
stopping(Bundle 正在被停止),
active(Bundle 被激活,正在运行中),
uninstalled(Bundle 被卸载了)
OSGi 究竟能够给企业应用带来什么?
第一点,也是笔者认为最重要的一点,基于OSGi 的应用程序可动态更改运行状态和行为。
第二点,它是一个稳定高效的系统。OSGi 是一个微核的系统,所谓微核是指其核心只有为数不多的几个jar 包。
第三点,可复用性强。
Eclipse 与OSGi 框架的关系图
OSGi框架各部分结构图
参考:
http://baike.baidu.com/view/362847.htm
http://developer.51cto.com/art/200903/112409.htm