`
james219
  • 浏览: 8603 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

OSGi 简介

    博客分类:
  • java
阅读更多

       OSGi——Open Service Gateway Initiative 字面上的意思是一个公共的服务平台。1999年OSGi 联盟成立,它是一个非盈利的国际组织,旨在建立一个开放的服务规范,为通过网络向设备提供服务建立开放的标准,是开放业务网关的发起者。OSGi 联盟的初始目标是构建一个在广域网和局域网或设备上展开业务的基础平台。历史总是具有惊人的相似性,正如Java 诞生于一个嵌入式开发的项目中,却被应用于网络平台的开发,对OSGi 的最早设计也是针对嵌入式应用的,诸如机顶盒、服务网关、手机、汽车等都是其应用的主要环境。后来,由于OSGi 的诸多优秀特性(可动态改变系统行为,热插拔的插件体系结构,高可复用性,高效性等等),它被应用于许多PC 上的应用开发,因此逐步为开发者所知和钟爱。

       OSGi 真正被大家所知还是和Eclipse 有密切关系的。Eclipse 很多年都是Java 开发者的首选IDE,相信只要是一个Java 开发者,应该没有人不知道Eclipse 的。在Eclipse 3.0 以前的版本中,它本身有一套自身的插件体系,而该插件体系的设计非常精巧细致,受到许多开发者的推崇,但是Eclipse 基金在Eclipse 3.0 发布的时候,做出了一个大胆的行为,就是将Eclipse 逐步迁移到OSGi 框架中,并自己实现了一个OSGi 开源框架,取名为Equinox,该框架随着每次Eclipse 的发布也会相应的更新。Eclipse 之所以这么做,其一是因为Eclipse 的插件体系与OSGi 的设计思想不谋而合,其二也是因为OSGi 更为规范,其对插件体系的定义也更为完整一些。事实证明Eclipse 在采用OSGi 架构后,无论从性能、可扩展性这两个方面来讲还是从二次开发的角度来定义,都取得巨大的成功。下图展示了Eclipse 与OSGi 框架的关系。


OSGi 的特点

      在介绍OSGi 框架的特点之前,先简单的介绍一下OSGi 框架的各个部分,如下图所示


       解释一下上图中每一层的含义,其中OS 层和JVM 层可以不用详细介绍了,重点需要关注的是应用程序Bundles 层。框架本身提供的类加载,生命周期管理,服务注册和规范服务也都是针对Bundles 的。每一个在OSGi 框架中运行的逻辑单元称为一个Bundle,Bundle 实际是一个符合特定形式的jar 文件。每一个Bundle 的功能可以是抽象的也可以是具体的。所谓抽象,就是它不是一个具体的应用,没有完成一些业务功能,而只暴露了一些接口或者功能给其他的Bundle 使用;所谓具体,就是该Bundle 可以独立的完成一个功能,例如连接数据库,获取数据等等。Bundle 有六种状态,分别是:installed(安装完成,本地资源成功加载),resolved(依赖关系满足,即该Bundle 要么是准备好运行了,要么是已经被停止了),starting(Bundle 正在被启动),stopping(Bundle 正在被停止),active(Bundle 被激活,正在运行中),uninstalled(Bundle 被卸载了)。OSGi 有它自身的类加载机制从而控制这些加载的Bundles 彼此之间的依赖关系,而生命周期管理也是OSGi 的一大亮点,由于可动态的对这些加载的Bundles 进行安装、卸载、启动、停止等操作,所以可以动态的改变应用程序的运行状态。当一系列的Bundles 存在于服务器中的时候,那么它们之间必然会存在通信协作的部分,比如说一个通过网页捕获用户输入的Bundle 执行的时候,它必须首先需要一个Web 服务器服务的支持,那么这个时候服务注册器就会从整个OSGi容器中寻找这个服务,如果能完成服务的匹配,那么相应的功能就会很自然的实现了。OSGi 规范还规定了一组预设的服务,包括日志、服务管理等等,这些服务在主流的开源框架中都有实现。OSGi 框架中还包括一个安全层,OSGi 的安全层扩展了Java 的安全机制,增并加了一些新的约束以填补了Java安全机制中的遗漏。

OSGi 开源框架介绍

当前的OSGi 开源框架主要包含如下几个:

Equinox

最知名,也是更新最频繁的,由于Eclipse 基金的支持,其功能越来越完善,笔者后续的具体开发都是基于该框架来实现的。当前已发布版本是3.3.1 与Eclipse 版本相同,实现了OSGi R4 规范,并提供很多平台性质的服务,包括:常用功能模块、日志模块、Web服务器模块、Servlet 模块、JSP 解析模块等等。由于其与Eclipse 的天然联系,使得开发基于Equinox 的应用程序变得很简单,笔者推荐采用此框架进行二次开发。具体内容可以从http://www.eclipse.org/equinox/ 下载。

Knopflerfish

很早的,也很优秀的一个OSGi 框架,也实现了OSGi R4 标准,去年十一月发布了其2.0.2版本。该项目的宗旨在于创建一个易于开发的OSGi 平台,与Equinox 不同之处在于它本身提供一些小应用实例,包括一个可视化控制台等,也提供基于Eclipse 的插件。具体内容可以从http://www.knopflerfish.org/ 下载。

Felix

很新的一个OSGi 框架,社区很活跃,更新频率高,是Apache 的开源项目。该项目2007年8月才出1.0 版,也实现了OSGi R4 规范,也提供相关的基础服务和扩展服务功能。具体内容可以从http://felix.apache.org/site/index.html 下载。

PS:忘了采摘自哪了。。。。

  • 大小: 18.8 KB
  • 大小: 17.4 KB
分享到:
评论

相关推荐

    osgi简介PPt(自制)

    OSGI(Open Service Gateway Initiative)是一个开放的中间件平台,旨在为各种嵌入式设备提供通用的软件运行环境,能够消除设备操作系统和硬件之间的差异。这个平台的核心是它的模块化系统,允许应用程序和服务动态...

    tomcat嵌入OSGI容器

    **OSGI简介:** OSGI的核心是它的模块系统,即Bundle。每个Bundle都是一个独立的Java应用程序单元,有自己的类加载器,可以包含类、资源和元数据。通过这种方式,OSGI允许不同的Bundle之间以安全、隔离的方式进行...

    OSGI原理与最佳实践(扫描版,带目录).pdf

    第1章 OSGi简介 第2章 OSGl框架简介 第3章 基于Spring—DM实现Petstore 第4章 基于Apache CXF实现分布式Petstore 第5章 构建OSGi Bundle Repository 第6章 OSGi规范解读 第7章 Equinox实现分析 第8章 Felix...

    OSGi™ Component Programming

    OSGi简介 OSGi的核心概念是模块化,它通过将应用程序分解为独立的组件来实现。这些组件被称为服务,它们可以单独安装、更新和卸载,而不会影响到系统的其他部分。OSGi通过使用包(Bundle)来封装组件,每个包都...

    Tomcat-Osgi

    1. **OSGi简介**:OSGi是一种动态模块系统,它允许开发者创建可插拔的组件,并在运行时安装、卸载和更新这些组件,无需停止应用程序。它的核心是OSGi框架,负责管理组件的生命周期、解决依赖关系和提供服务注册表。 ...

    很久之前的osgi整理

    1. **OSGi简介**: OSGi的核心是其模块系统,它提供了一种动态的运行时环境,使得模块可以在生命周期内被安装、启动、停止、更新和卸载。这种灵活性极大地提高了软件的可维护性和可扩展性。 2. **模块化概念**: ...

    Equinox开发OSGi应用程序

    ##### OSGi简介 OSGi是动态模块系统的一个工业标准,支持模块化、面向服务和面向组件的应用程序开发。OSGi规范由OSGi联盟负责维护和更新,最新版本已经发展到了R4阶段。通过OSGi,开发者可以轻松地管理和控制应用...

    基于 OSGI 的 RCP 测试 2 Standard

    **OSGi简介** OSGi的核心是其模块系统,它通过将代码划分为可独立加载和卸载的模块(称为“bundles”),解决了Java类加载器的问题。每个bundle都有自己的命名空间,可以声明依赖其他bundle,并且只有当所有依赖满足...

    spring-osgi-1.2.0-rc1-with-dependencies.zip

    1. **OSGi简介** OSGi的核心是其模块化系统,它将Java应用分解为独立的、可重用的模块,每个模块称为一个bundle。这些bundle之间通过服务进行交互,具有动态加载和卸载的特性,极大地增强了软件的灵活性和可维护性...

    OSGi core

    #### 一、OSGi简介 OSGi(Open Service Gateway Initiative)是一个模块化系统和能力框架,最初是为服务网关设备设计的,但后来扩展到其他领域,如企业应用服务器、富客户端系统以及运行在嵌入式设备中的Java平台。...

    osgi实战(pdf超请版)

    - **OSGI简介**:OSGI(Open Service Gateway Initiative)是一种模块化平台标准,用于构建可复用的服务和应用程序。它最初被设计用于服务网关设备,但逐渐成为Java平台上通用的模块化标准。 - **目标与愿景**:本书...

    To embed OSGi in servlet container

    1. **OSGi简介**:解释OSGi的基本概念,包括其模块系统(称为bundle)、类加载器机制以及服务注册和查找的原理。 2. **Servlet容器与OSGi的结合**:介绍为什么要在Servlet容器中使用OSGi,以及这种结合能解决哪些...

    osgi 实战 pdf

    ### OSGi简介 OSGi(Open Service Gateway Initiative)是一个模块化平台,用于构建和管理复杂的软件系统,尤其是Java应用。它提供了一种标准的方法来封装和部署代码,允许动态加载、卸载和更新模块,而无需重启整个...

    OSGi原理与最佳实践pdf下载(完整版)

    OSGI原理与最佳实践的完整版,共12...第1 章OSGi 简介 第2 章OSGi 框架简介 第3 章基于Spring-DM 实现Petstore 第4 章基于Apache CXF 实现分布式Petstore 第5 章构建OSGI Bundle Repositor'y 第6 章OSGi 规范解读 ……

    OSGI学习手册及实践

    OSGI简介与背景 - **OSGI**(Open Service Gateway Initiative)是一种用于构建模块化应用程序和服务的框架,旨在提高软件系统的灵活性、可扩展性和可维护性。它最初是为了创建智能家庭网关设备而设计的,但后来...

    osgi in action 2011

    1. **OSGi简介**:OSGi的核心理念是将应用程序分解为独立的模块,这些模块称为服务。每个服务都有明确的接口定义,能够互相依赖,但又相互隔离,这极大地提高了代码的可重用性和可维护性。 2. **模块系统**:OSGi的...

    Java Application Architecture Modularity Patterns with Examples Using OSGi Part1

    第13章 OSGi简介 13.1 一点历史 13.2 OSGi所能带来的收益 13.2.1 模块化开发 13.2.2 管理依赖 13.2.3 模块平台 13.2.4 版本化的bundle 13.2.5 动态(重)部署 13.2.6 环境相关的控制 13.3 深入理解OSGi 13.4 OSGi ...

    Java Application Architecture Modularity Patterns with Examples Using OSGi Part2

    第13章 OSGi简介 13.1 一点历史 13.2 OSGi所能带来的收益 13.2.1 模块化开发 13.2.2 管理依赖 13.2.3 模块平台 13.2.4 版本化的bundle 13.2.5 动态(重)部署 13.2.6 环境相关的控制 13.3 深入理解OSGi ...

Global site tag (gtag.js) - Google Analytics