我刚开始听到有人使用术语 OSGi (在阅读关于GlassFish和Spring等常见Java容器的教程时),但是我一直找不到像我这样的企业新手能够理解的关于OSGi是什么的简单、直截了当、易于理解的解释。
有没有人能提供这样一个可靠的解释?也许有一些例子,甚至是代码摘录?
谢谢!
发布于 2011-01-03 11:04:47
简单地说,OSGi是一个动态的Java模块系统。它定义了安装、卸载、更新、启动和停止模块的方法。这些模块被称为包,但在它们最简单的形式中,实际上是带有特殊清单的Java jar文件。可以在不停止或重新启动Java VM的情况下安装、卸载等模块。
OSGi框架以一种安全的方式管理所描述的包的生命周期和包之间的依赖关系。捆绑包需要声明它导出和导入了哪些Java包。import和export语句可以使用版本信息进行注释,这样您甚至可以在同一个Java VM中拥有同一个包的多个版本。
OSGi联盟是指定OSGi框架和许多附带服务的组织,例如用于管理配置数据、设备访问等。
这只是一个非常基本的概述。OSGi远不止这些。请看一下https://www.osgi.org/resources/architecture/ (对OSGi架构的介绍)和https://www.osgi.org/resources/where-to-start/ (OSGi联盟推荐的许多链接和进一步的读物)。
更新07/2021
到2021年为止,OSGi联盟将所有资源和工作都转移到了Eclipse Foundation。它继续在新成立的OSGi工作组中开展工作。
发布于 2011-01-03 11:36:53
以一些反对票为代价;-),我想用我自己的话回答这个问题(这样我就可以纠正我的理解)。
我们将应用程序构建为一组模块,每个模块在功能上相互内聚,并与其他模块松散耦合。正如您可能已经知道的,这有许多优点。随着时间的推移,模块化的单元已经从函数到类,再到包,再到部署单元(就像Java中的jar和.Net中的组装)。但所有这些都只是在开发期间,一旦部署了应用程序(这是一组模块),服务器仍然将其视为一个巨大的整体应用程序,即在运行时不会保留逻辑边界。OSGi在开发和运行时中明确了这些界限,而不是other benefits outlined here
我推荐这本很棒的免费书来帮助你入门OSGi in Practice
如果您在Java平台上工作,也可以查看这个演示文稿:Why Have The OSGi Specifications Been Based On Java™ Technology?
https://stackoverflow.com/questions/4578850
复制相似问题