1.OSGI 概述
1.1. 什么是OSGI
OGSI是一种规范,OSGi 规范的核心定义 Java 组件和服务模型,组件和服务可以动态地安装、 激活、 取消激活、 更新以及卸载。软件中的每个组件在OSGI中称为Bundle。
OSGi 的一个非常实用的优点是每一个Bundle都必须定义其导出的 Java 包和所需的依赖项。通过这种方式可以有效地控制提供的 API 和插件的依赖项。
1.2. Bundle与插件
插件是Eclipse中的最小模块单元,Bundle与插件几乎是可以互换的,一个插件也是一个OSGI Bundle,反之亦然。
1.3. 实现
OSGI已经有很多实现,例如Equinox, Knopflerfish OSGi or Apache Felix.
1.4. Eclipse的Equinox
Eclipse的Equinox是基于OSGI规范的实现,也这是Eclipse程序的运行时环境,Eclipse的扩展点是基于OSGI的Bundle和Service的概念来进行的。
2. OSGI Bundle和依赖管理
2.1. OSGI Bundle
OSGI规范定义了OSGI Bundle为模块化的单元。
一个Bundle是一个紧密结合的、自包含的单元,它明确定义了对其他模块的依赖关系和服务,同时还定义了对外开放的API。
从技术上讲Bundle是一个带有额外元数据的.jar文件,这个元数据存储在META-INF/MANIFEST.MF中,META-INF/MANIFEST.MF文件是Java规范的一部分,任何非 OSGi 得运行时将忽略 OSGi 的元数据。因此 OSGi Bundle可以不受限制的在非 OSGi Java 环境中使用。
Read More