`
sungine
  • 浏览: 27963 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

OSGi体系结构 - 学习笔记

 
阅读更多

 

OSGi体系结构

OSGi 的初衷是面向嵌入式系统的应用,支持在一个Java虚拟机上加载和启动多个Java应用程序。随着OSGi在Eclipse3.0上的应用成功,其逐渐成为构建纯插件结构的企业级应用软件系统的首选平台。

 

 

注 写道
学习osgi缘起于RCP,接触时发现RCP就是在一个运行器上加载工程代码,但还不知道这个运行器的体系结构 所以才找到了OSGI,貌似同类型的其他运行器也是有的,当初自己写代码时运行器设计的很简单也缺乏可移植性,现在有了新的思路
 

 


OSGi 是一个纯插件的体系结构,OSGi 框架实现是一个最为核心的插件,逻辑实现分层见下面两张图:


             

L0层Java执行环境

OSGi最初规范定位到嵌入式系统,例如家电、汽车、手机等执行环境,所以插件要配置适合的运行环境与Policy。当OSGi框架加载插件时会对插件要求的执行环境做校验。例如,Eclipse中可以配置下图中的执行环境:


L1模块层(组件或插件层)

L1模块层(插件层 或 组件层)定义插件的ClassLoading策略(Policy),这也是OSGi最为出色和吸引人的地方。我们知道,任何一个Java平台的插件体系结 构,首先要解决的是ClassLoading的问题。OSGi在Java动态ClassLoading基础之上,提供了完美的插件 ClassLoading解决方案。传统J2SE程序,有单一的Classpath包含所有的classes与resources,L1插件层为每个 OSGi插件提供了私有的Classpath和独立的Classloader,有效的控制了插件间的Class隔离、依赖与协作。

 

 

注 写道
bundle原意是捆,这里就像是把每个单独的插件打成捆,互相分离的堆在一起,用bundle class loader 动态加载,每个插件 就彼此完全分离,其中环境变量之类的参数 全部采用工程配置文件的方式管理
 

 

插件间的Class依赖关系见下图(版权归www.osgi.org):

插件的类空间(Class Space)见下图(版权归www.osgi.org):

注 写道
这部分介绍了 bundle间的依赖或者说调用关系,不是必须完全隔离的
 

插件的类加载过程:


L2插件生命周期管理层

L2层负责运行时动态安装(Install)、启动(Start)、停止(Stop)、更新(Update)或卸载(Uninstall)插件。

插件的生命周期见下图(版权归www.osgi.org):

L3服务注册层

L3提供了一个动态的服务注册模型,插件可以注册(register)、发现(lookup)、使用(reference)服务。

该层的服务注册采用ServiceLocator模式,见下面图示:

 


该层的实现由于没有直接的IoC容器支持,被很多过分相信IoC作用的人所批评。Martin Fowler曾经说过,“说一个系统是基于IoC的,就好像说一个汽车有四个轮子”,IoC只不过是一种模式和设计原则,任何一个设计得比较好的面向对象 系统都或多或少的具备这样的特征,这与存不存在一个独立的IoC容器关系不大,尽管IoC容器在开发上带来很大的便利与优势。另外一个方面,IoC容器本 质上还是一个Service Registry,只不过增加依赖装配功能,所以在OSGi的服务注册模型上,可以很容易的支持IoC。

 

注 写道
这就是之前发现问题——意图修改工程注册服务的ID标识却不可的得——的所在,却没有实在的配置文件支持(没有用到直接的IoC)
 

 

 

http://www.javaeye.com/wiki/OSGi/556-OSGi%20Pure%20Plugin%20Architecture%20Introduction

分享到:
评论

相关推荐

    Eclipse插件开发学习笔记全篇+源码.rar

    本文将深入探讨Eclipse插件开发的相关知识点,结合提供的"全书分为4篇共24章"的学习笔记和源码,帮助你更全面地理解和实践Eclipse插件开发。 第一篇:基础篇 在这一篇中,你将学习到Eclipse插件开发的基础知识,...

    eclipse插件开发学习笔记

    - Eclipse的核心架构之一就是其强大的插件体系,这种体系基于OSGi(Open Service Gateway Initiative)规范。通过插件机制,开发者可以扩展Eclipse的功能,而不必修改其核心代码。 - OSGi定义了一套模块化的服务框架...

    Eclipse 插件开发学习笔记.rar

    本学习笔记将深入探讨Eclipse插件开发的相关知识,以帮助你掌握这一核心技能。 一、Eclipse插件体系结构 Eclipse基于OSGi(Open Service Gateway Initiative)框架,采用模块化设计,使得每个功能都以插件的形式...

    [Eclipse插件开发学习笔记].张鹏等.扫描版-1

    2. **插件体系结构**:学习Eclipse插件开发首先要了解OSGi(Open Services Gateway Initiative)框架,它是Eclipse插件运行的基础。理解Bundle(模块)的概念,以及如何创建、配置和管理它们。 3. **开发环境搭建**...

    Eclipse插件学习笔记

    1. **Eclipse插件体系结构**:首先,你需要理解Eclipse的插件模型,它是基于OSGi(开放服务网关规范)的。了解Plugin ID、Bundle、Extension Point和Extension等概念,以及它们在Eclipse插件架构中的作用。 2. **...

    eclipse插件开发学习笔记1-14章

    本学习笔记涵盖了从基础到进阶的14个章节,旨在帮助读者全面掌握Eclipse插件开发的核心技术。 首先,我们需要了解Eclipse的插件体系结构。Eclipse基于OSGi框架,每个插件都是一个独立的模块,通过声明依赖关系与...

    Eclipse插件开发笔记—PDF—带目录

    第9章 Eclipse插件体系结构 第10章 开发 第一个插件项目 第11章 操作(Actions) 第12章 视图(Views) 第13章 编辑器(Editors) 第14章 透视图(Perspectives) 第15章 对话框和向导(DialogsWizards) 第16章 首选项...

    eclipsePluginStudyNoteSourceCode:Eclipse插件开发学习笔记-源代码1至24章

    1. **插件体系结构**:Eclipse基于OSGi(Open Service Gateway Initiative)框架,由多个插件组成,每个插件都可以提供特定的服务或功能。插件之间通过API进行交互,形成一个模块化、可扩展的系统。 2. **Plugin....

    eclips插件开发

    1. **Eclipse插件体系结构** Eclipse是基于OSGi模块系统构建的,每个插件都是一个独立的OSGi模块,具有自己的类路径和生命周期。插件之间通过服务和API进行交互,这使得Eclipse能够灵活地扩展功能。 2. **OSGi框架...

    Eclipse插件开发 第1篇到第4篇 开发基础 核心技术 高级进阶 综合实例 eclipse 插件安装方法.zip

    这一部分通常会介绍插件开发的基本概念,包括Eclipse插件体系结构、OSGi框架以及如何创建第一个Eclipse插件项目。开发者会学习到Plugin.xml文件的重要性,它是描述插件元数据的关键,包括插件依赖、提供的服务、激活...

    Eclipse插件开发笔记源码

    1. **Eclipse插件体系结构**: Eclipse采用插件化架构,每个功能模块都是一个插件,这些插件通过OSGi(开放服务网关协议)框架进行交互。开发者可以通过编写插件,扩展Eclipse的功能,如代码编辑器、调试器、构建...

    rcp开发笔记

    RCP允许开发者利用插件体系结构构建可扩展的应用,使得应用程序可以根据需要动态加载和卸载功能模块。 在RCP开发过程中,主要涉及以下几个关键知识点: 1. **产品导出**:创建RCP程序时,需要为产品定义配置文件,...

    eclipse 插件 实例01

    在Eclipse插件开发中,首先需要理解的是插件体系结构。每个插件都是一个独立的模块,通过OSGi(开放服务网关倡议)框架进行管理。这些插件可以互相依赖,提供特定的功能,如编辑器、透视图、视图或操作。在这个实例...

Global site tag (gtag.js) - Google Analytics