什么是OSGI
OSGi(Open Service Gateway Initiative)有双重含义。一方面它指OSGi Alliance组织;另一方面指该组织制定的一个基于Java语言的服务(业务)规范——OSGi服务平台(Service Platform)。
OSGi Alliance是一个由Sun Microsystems、IBM、爱立信等于1999年3月成立的开放的标准化组织, 最初名为Connected Alliance。该组织及其标准原本主要目的在于使服务提供商通过住宅网关,为各种家庭智能设备提供各种服务。目前该平台逐渐成为一个为室内、交通工具、移动电话和其他环境下的所有类型的网络设备的应用程序和服务进行传递和远程管理的开放式服务平台。
该规范和核心部分是一个框架 ,其中定义了应用程序的生命周期模式和服务注册。基于这个框架定义了大量的OSGi服务:日志、配置管理、偏好,HTTP(运行servlet)、XML分析、设备访问、软件包管理、许可管理、星级、用户管理、IO连接、连线管理、Jini和 UPnP。
这个框架实现了一个优雅、完整和动态的组件模型。应用程序(称为bundle)无需重新引导可以被远程安装、启动、升级和卸载(其中Java包/类的管理被详细定义)。API中还定义了运行远程下载管理政策的生命周期管理。服务注册允许bundles去检测新服务和取消的服务,然后相应配合。
OSGi原先关注于服务网关,其实可用于多个方面。现在OSGi规范已经用于从移动电话到开源的Eclipse(其中包括了与IBM的OSGi框架SMF兼容的开源版本)。 OSGi服务平台的应用包括:服务网关、 汽车、移动电话、 工业自动化、建筑物自动化、 PDA 网格计算、娱乐(如iPronto)、和IDE。
OSGi规范是由成员通过公开的程序开发,对公众免费而且没有许可证限制。但是OSGi Alliance的兼容性程序只对成员开放,目前有12个兼容的实现。
2003年Eclipse选择OSGi作为其插件的底层运行时架构。Equinox project对该理念进行了实验,2004年6月在Eclipse3 R3中发布。ProSyst是面向OSGi开发者的Eclipse插件。
2003年10月, 诺基亚、摩托罗拉,ProSyst 和其他OSGi成员组建了Mobile Expert Group (MEG)为下一代智能手机规范业务平台,做为对MIDP 和CDC的补充。
OSGi(Open Service Gateway Initiative)技术是面向Java的动态模型系统。OSGi服务平台向Java提供服务,这些服务使Java成为软件集成和软件开发的首选环境。 Java提供在多个平台支持产品的可移植性。OSGi技术提供允许应用程序使用精炼、可重用和可协作的组件构建的标准化原语。这些组件能够组装进一个应用 和部署中。
OSGi亦称做Java语言的动态模块系统,它为模块化应用的开发定义了一个基础架构。OSGi容器已有多家开源实现,比如 Knoflerfish、Equinox和Apache的Felix。您可以通过这些容器,把您的应用程序劈分为多个模块单元,这样,您就可以更容易地管 理这些模块单元之间的交叉依赖关系。
OSGi的主要职责就是为了让开发者能够建动态化、模块化的Java系统。
传统的开发和部署的局限性
1、java讲求的是面向接口编程,比如接口A有两个实现类B和C,当在运行时需要将B转换成C的时候,就需要重新启动服务,否则是无法实现的,也就是说J2EE本身是不提供这种支持的。
2、JAR文件规范粒度太粗,没有足够的约束力。运行期,如果这些第三方Jar包不存在,或者命名存在差异,或者提供了不同JAR包版本,则会出现各种不同结果。Java SE/Java EE平台没有细化这方面的任何内容。
3、由于Java EE平台规范没有针对Java package引入版本支持,这使得在同一企业应用中几乎不可能启用同一JAR包的不同版本。与此同时,现有的Java EE技术体系难以动态升级、替换生产环境,实际的做法是,每次部署新版应用时,都需要重启应用或Java EE容器,进而影响到在线用户。
4、维护成本较高。因为企业应用的模块化程度不高,即Java EE的模块化更多地是停留在逻辑概念层面。通常,我们会将企业应用以单个WAR包形式存在,其中内置了当前应用所有的内容,包括.class、.jsp、.js等资源。很显然,这给维护工作带来挑战,毕竟升级或修改WAR包中的任何内容都可能会波及到整个WAR包。这就要求,每次升级生产环境之前,都必须对整个WAR包的各个方面进行完整的回归测试,进而增加了不必要的维护成本,包括人力和物力成本。
5、开发不具备模块化的特性,一般企业中项目往往是放到一个工程中,这样造成的后果是模块化能力不强,难于维护,越大越不容易维护。
OSGI的优缺点
a) 您可以在不重启容器的情况下,动态地安装、卸载、启动和停止您的应用程序中的不同模块;
b) 对于您应用程序中的某一特定模块,容器可以同时运行该模块的多个版本;
c) OSGi为开发嵌入式应用、移动应用、富互联网应用(RIA)提供了非常优秀的基础架构
OSGI的分类
主要分成以下三个部分:
1、OSGi服务平台Core规范及服务集合。这类似于Java SE平台。
2、OSGi服务平台Residential规范。这类似于Java ME平台。
3、OSGi服务平台Enterprise规范。这类似于Java EE平台。
使用OSGI实现SOA
模块化设计是软件设计的一个基本思想,同时作为SOA应用,一个很重要的需求就是要方便用户扩展,利用扩展向SOA应用添加新功能,并能够很方便地和应用 本身做无缝集成。这就要求SOA应用中的模块提供可接入的扩展实现,还可以提供进一步扩展的能力。OSGi具备构造满足这样特点的SOA应用模块的能力。 OSGi提供了一个微内核的机制,实现了模块的可插拔,并为模块定义了一个清晰的物理格式,保证了模块开发与复用的一致性。
详细的内容可以参考
http://book.51cto.com/art/200912/173733.htm
本文转自:http://www.cnblogs.com/skyme/archive/2012/07/09/2580613.html
相关推荐
OSGi(Open Services Gateway Initiative)是一种Java模块化系统,它为开发人员提供了一种动态、模块化的运行时环境。在OSGi中,应用程序被分解为称为“bundle”的独立单元,这些bundle可以相互依赖并独立地加载、...
在这个压缩包中,我们可以找到一个名为"OSGI介绍"的文件,它可能包含了OSGI的基本概念、核心特性以及如何开始学习OSGI的相关知识。 首先,OSGI的核心概念是模块系统。在OSGI框架中,每个模块被称为服务单元或bundle...
NULL 博文链接:https://chinasxhz.iteye.com/blog/256689
【OSGi介绍.ppt】 OSGi,全称为Open Services Gateway Initiative,中文译为开放服务网关倡议,是一种针对Java平台的动态模块系统。OSGi旨在解决软件开发中的复杂性问题,提供了一种模块化、可扩展且动态化的系统...
### R-OSGi介绍 R-OSGi是OSGi在分布式环境中的扩展,它将OSGi服务的概念应用于网络环境,允许服务跨越不同网络节点进行通信。R-OSGi的核心特性包括: 1. **透明性**:R-OSGi提供了透明的远程服务调用,意味着...
### OSGi介绍 在OSGi框架中,模块被定义为最小的部署单元,即“Bundle”。Bundle本质上是一个包含特殊元数据(如`Bundle-Name`等)的JAR文件,这使得它能够与其他Bundle在同一个Java虚拟机中运行时保持隔离,同时...
通过阅读《Introduce.ppt》这个文件,我们可能会获得更深入的OSGi介绍,包括它的核心概念、优势、使用示例,以及如何在实践中应用这些概念。遗憾的是,由于没有实际文件内容,我们无法提供具体的细节。但通过上述...
提供的"osgi框架介绍"可能包含基础的PDF教程,它们通常会涵盖以下几个方面: - OSGi的基本概念和架构 - Bundle的创建和配置 - 依赖管理和版本控制 - 服务注册、发现及事件处理 - 示例项目和实战演练 通过深入学习...
OSGi(Open Service Gateway Initiative)是一个面向Java的动态模型系统,旨在为长时间运行的系统提供动态更新能力,并且在更新过程中对运行环境影响最小化。OSGi框架的核心优势在于实现类资源的动态加载、更新和...
7. **调试与监控**:介绍如何在OSGI环境中进行调试和性能监控,以优化应用程序。 在《OSGI进阶》中,林昊可能进一步探讨以下高级主题: 1. **复杂系统的集成**:如何将OSGI与其他技术,如Spring、EJB或RESTful服务...
资源名称:OSGI原理与最佳实践内容简介:国内第一本OSGi图书OSGi国内推广者林昊多年经验的结晶涵盖OSGi从入门到深入的知识体系引领OSGi国内研究和普及本书基于作者多年使用OSGi的经验而...,介绍OSGi的作用及基本概念...
本书详细介绍了模块化编程的重要性,以及OSGi如何强化Java的模块化能力。同时,本书也解答了为何传统上的企业级Java应用和OSGi结合得并不理想,以及企业OSGi如何解决这一问题,从而提出了一种新的编程模型。 书中...
OSGi规范中文版是一本全面介绍OSGi技术的书籍,它不仅涵盖了OSGi技术的基础知识,还详细介绍了OSGi的内部结构和工作原理,对于想要深入学习和应用OSGi技术的开发者而言,是一本非常有价值的参考书。 ### OSGi规范的...
1. **OSGi基础**:介绍OSGi的核心概念,如模块系统(称为"bundle"),服务注册和发现机制,以及如何将Java应用程序划分为独立的模块。 2. **模块化开发**:讲解如何使用OSGi模块化你的代码,减少依赖冲突,提高代码...
OSGI技术介绍,自己公司的培训文档,非常全面的描述了OSGI
下面将详细介绍这些文档所涵盖的关键知识点。 首先,"OSGi R4核心规范文档"是理解OSGI机制的基础,R4代表了OSGI的第四代版本。该规范定义了OSGI框架的基础架构,包括模块系统、生命周期管理、服务注册与发现等核心...
本文通过介绍传统 OSGi 应用程序及 R-OSGi 的实现方式入手,阐述了 R-OSGi 对于 OSGi 规范的实现方式。然后通过一个简单的功能实现由浅入深地讲述传统 OSGi 和 R-OSGi 上的两种不同实现,让您对实际操作加深印象。...
- Spring与OSGi的整合:介绍如何在OSGi环境中使用Spring,如使用Declarative Services或Blueprint API。 - 微服务架构:讨论如何利用OSGi的模块化特性构建微服务,实现松耦合和独立部署。 - AOP在OSGi中的应用:...
本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入的知识体系,从OSGi的简介开题,介绍OSGi的作用及基本概念;其后进入OSGi实战,结合实例讲解如何基于OSGi框架编写模块化、动态化的各种Java应用;最后...