什么是OSGi以及它的一些使用示例?

时间:2011-01-02 14:44:18

标签: terminology osgi

我刚开始听到正在使用的术语 OSGi (在阅读GlassFish和Spring等常见Java EE容器上的教程时),但我一直无法找到一个简单,直截了当的,易于理解的解释OSGi是什么样的企业新手,比如我自己会理解的。

有人可以提供这样的防伪说明吗?也许有一些例子甚至代码摘录?

谢谢!

2 个答案:

答案 0 :(得分:65)

简单地说,OSGi是一个用于Java的动态模块系统。它定义了安装,卸载,更新,启动和停止模块的方法。这些模块称为bundle,但它们最简单的形式实际上是带有特殊Manifest的Java jar文件。无需停止或重新启动Java VM即可安装,卸载模块等。

OSGi框架以安全的方式管理所描述的bundle之间的生命周期和依赖关系。 bundle需要说明它导出的Java包以及它导入的包。 import和export语句可以使用版本信息进行注释,因此您甚至可以在同一Java VM中拥有同一个包的多个版本。

OSGi联盟是指定OSGi框架和许多附带服务的组织,例如:用于管理配置数据,设备访问等。

这只是一个非常基本的概述。 OSGi更多。 请查看https://www.osgi.org/developer/architecture/(OSGi架构简介)和https://www.osgi.org/developer/where-to-start/(OSGi联盟推荐的大量链接和进一步阅读材料)。

答案 1 :(得分:32)

以牺牲一些票数为代价;-),我想用自己的话回答这个问题(这样我就可以根据自己的理解得到纠正)。

我们将应用程序构建为一组模块,每个模块本身具有内聚性,并与其他模块松散耦合。您可能已经知道这有许多优点。加班时间,模块化的单位已经从功能到类,包再到部署单元(如Java中的jar和.Net中的汇编)。但所有这些只是在开发期间,一旦部署了应用程序(它是一组模块),服务器仍然将其视为一个巨大的单片应用程序,即在运行时期间不保留逻辑边界。除了other benefits outlined here

之外,OSGi在开发和运行时期间明确界定这些边界

我建议这本优秀的免费书籍让你入门OSGi in Practice

如果您使用的是Java平台,请查看此演示文稿:Why Have The OSGi Specifications Been Based On Java™ Technology?