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的架构 osgi框架是什么_开发工具

OSGi框架各部分结构图 

osgi的架构 osgi框架是什么_osgi的架构_02

参考:
  http://baike.baidu.com/view/362847.htm 

 http://developer.51cto.com/art/200903/112409.htm