`
Irving_wei
  • 浏览: 132638 次
  • 性别: Icon_minigender_1
  • 来自: Heaven
社区版块
存档分类
最新评论

Equinox总结

    博客分类:
  • OSGI
阅读更多

OSGIOpen Service Gateway Interface),开放性服务网关接口。是一种新的编程规范,它的出现引导我们朝着另外的方向去组织我们的代码。

传统的面向对象的java编程方案,有着经典的代码集合单位:类。本人以为,将同类事物的共性抽象出来,就是类。这种编程方式给程序编写带来了一次新的革命。它引导我们按着:接口-实现类-调用,这样的方式编程。这样带来的好处,毋庸置疑,类的功能单一使得类之间都处于“松耦合”的状态,维护起来很方便,层次结构更清楚使得项目开发和维护都比以前轻松。

随着时间的推移,社会的进步,我们客户的需求越来越复杂,变动性越来越大。每个项目只有提供更多的类,才能达到“单一灵活,层次分明”的目标。这就会产生一个问题:类太多了,而且似乎有点混乱。如果这时候需要加上“动态扩充、修改以及改变”的功能,这就有点困难了。在传统的以包归类的方式下,很容易出现包之间的引用,这样就有可能出现模块的交叉引用,或者说是代码污染。这将导致对整个系统灵活性的牵制,无法很方便地进行模块的动态部署,修改,卸载。

设想,如果软件也可以像硬件一样,实现一种“可拔插”的功能,不会受到其他的功能的影响,也不会影响到其他的功能模块,当然也就实现了软件最大的灵活性。其实这样的例子在我们身边已经有代表了,象赫赫有名的IDE Eclipse 就是OSGI思想的完美体现。

Eclipse本身的东西其实很少,就只是一个内核。其他的功能都是以“插件”的形式“动态装配”到上面去的,每个功能就是一个插件,各个插件之间不会受到彼此的影响。打开Eclipse的安装目录,有一个“plugins”文件夹,打开它会发现,里面是很多的jar文件,没错,这些就是我们用到的每个功能模块的API。具体Eclipse使用的是OSGIEquinox(OSGI R4 RI)实现。从3.0版本开始,eclipse虽然在界面上和功能上没有多大的改进,但是其内核,其模块组织形式,却是已经“脱胎换骨”。正因为如此,使得Eclipse具有了高度的扩展性,模块和功能可以任意添加,修改。Eclipse的优秀表现,也使得EquinoxOSGI的诸多实现中占据着优势。

然而OSGI并没有想象中那般火热,引用“OSGI实战(BuleDavy)”的说法:OSGI的推广之所以比较难的原因就在于OSGI的引入并不象决定项目是采用struts还是webwork那么简单,OSGI带来的是设计思想以及开发方式的改变,这也就一定程度上要求系统设计师以及程序开发人员要接受一种新的开发方式,形象的说我觉得就是要让你从jsp+javabean的方式转为采用MVC框架的方式,自然会有些不适应的感觉,但相信只要接受了,会体现出它的足够优势。由此可见,OSGI,带来的是一种编程习惯,思想和方式的改变。将面向对象的方式转换成“面向服务,面向组件”的方式。

EquinoxOSGi核心实现由三部分组成,包括:

OSGi核心规范的实现(org.eclipse.osgi

该项目是OSGi核心框架标准规范的实现。由于Eclipse3.0版本之前未采用OSGi作为系统内核,所以,为了重用Eclipse3.0以前核心系统的代码,EquinoxOSGi实现在一定程度上显得比较繁冗。用户如果想研究开源的OSGi框架实现的源代码,可以从Oscar(目前为ApacheFelix项目)或Knopflerfish项目着手。ObjectWeb上的Oscar项目最初实现OSGi R2版本框架时,整个核心的源代码不超过40个类文件。现在,Oscar项目转由Apache维护,项目称之为Felix,目前已发布1.0版本。Knopflerfish也是很早实现OSGi的一个开源项目,该项目的网站上提供了很多关于OSGi编程的注意事项。

OSGi框架启动支持(org.eclipse.equinox.launcher

OSGi 框架启动支持对于Eclipse IDE开发环境熟悉的开发用户来说并不算陌生。使用Eclipse以前版本的用户会发现在Eclipse安装目录下有一个startup.jar的文件,该文件是Eclipse开发环境的入口程序封装。Equinox将该Jar文件的实现迁移为一个独立的OSGi Fragment。该Fragment主要是帮助Equinox建立起运行环境,如类加载路径,运行配置参数等等。

Equinox启动可执行程序

Equinox启动可执行程序即为eclipse.exe文件,该执行程序并不是Eclipse以前版本的exe可执行文件,而是由原来的eclipse.exe程序拆分而来,该执行文件的一部分功能拆分为一个共享DLL,放置在OSGi框架启动支持段项目(org.eclipse.equinox.launcher)中,与原来的Eclipse根目录下的startup.jar文件功能合并。

OSGI是一个微核结构的容器,所有的模块都要运行在容器中,每个模块称之为一个Bundle,什么是Bundle?实际上,它就是一个实现了某个功能的jar包。它与其他的jar文件不同的地方在于,它的meta-inf目录下的MENIFEST.MF文件中,描述了该Bundle的所有信息,包括它的版本,开发者,依赖包之类之类的信息,我们称其为“元数据”。可以说,BundleOSGI开发的基本单位。接下来将具体介绍一下Bundle

 

 

Bundle通过实现BundleActivator接口去控制其生命周期,在Activator中编写Bundle启动、停止时所需要进行的工作,同时也可以在Activator中发布或者监听框架的事件状态信息,以根据框架的运行状态做出相应的调整,但同时要注意,如果应用是被类似才用Ctrl+C等方式强行终止的话,那么Activator中的stop方法是不会被调用的。

Bundle是个独立的概念,在OSGI框架中对于每个Bundle采用的是独立的classloader机制,这也就意味着不能采用传统的如引用其他Bundle的工程来实现Bundle间的协作了,那么在OSGI框架中Bundle之间是怎么协作的呢,在OSGI框架中对于每个Bundle可以定义输出的包以及引用的包,这样在Bundle间就可以共享包中的类了,这样可以实现简单的Bundle间的合作。不过编写service的方式更加被推荐,通过BundleContxt对象注册对外的服务,同样也可以通过它来获取需要引用的服务。

分享到:
评论

相关推荐

    equinox-SDK-4.22M1.zip

    Equinox SDK 4.22M1 是 Eclipse ...总结来说,Equinox SDK 4.22M1 是一个用于 OSGi 开发的强大工具集,提供了完整的开发环境、运行时支持以及软件管理功能,使得开发者能够高效地构建模块化的、可维护的 Java 应用。

    基于Equinox开发OSGi应用(一)

    总结来说,基于Equinox的OSGi应用开发是一种强大的模块化开发方式,它提供了高度的灵活性和可扩展性。通过学习和实践,我们可以创建更加健壮、易于维护的Java应用程序。"helloworld"项目是一个很好的起点,它能帮助...

    equinox-SDK-Mars.2.zip

    总结来说,"equinox-SDK-Mars.2.zip"是一个专为Eclipse Mars.2版本设计的Equinox SDK,包含了运行和开发基于OSGi的Eclipse插件所需的所有组件和元数据。使用时必须注意版本匹配,以避免可能出现的兼容性问题。通过...

    深入理解OSGi:Equinox原理、应用与最佳实践.pdf

    总结来说,OSGi Equinox通过提供一套标准化的模块化、服务化组件机制,为复杂系统的动态化、可维护化提供了强大的支持。掌握其原理和应用,遵循最佳实践,可以帮助开发者构建更加稳定和灵活的Java应用程序。然而,...

    基于Eclipse的Equinox框架开发OSGi Bundle应用

    总结来说,基于Eclipse的Equinox框架开发OSGi Bundle应用,可以提高软件的模块化程度,增强系统的灵活性和可维护性。通过PDE工具,开发者能够轻松地创建、管理和调试OSGi应用,进一步提升开发效率。深入理解OSGi和...

    使用Equinox开发OSGi应用程序

    总结来说,使用Equinox开发OSGi应用程序涉及到理解OSGi核心概念,创建和配置bundle,使用服务,以及构建模块化应用架构。通过Eclipse和Equinox,开发者可以获得强大的工具支持,简化开发流程,实现高度可扩展和动态...

    eclipse-equinox-3.4.2.zip

    总结起来,Eclipse Equinox 3.4.2是一个强大的模块化框架,它构建在OSGi规范之上,提供了灵活的插件系统、动态更新管理、安全的组件交互以及丰富的服务注册和发现机制。这个版本的Equinox不仅为Eclipse IDE提供了...

    《深入理解OSGi:Equinox原理、应用与最佳实践》迷你书

    本书《深入理解OSGi:Equinox原理、应用与最佳实践》深入剖析了OSGi技术的原理和应用,着重介绍了基于OSGi R5.0规范的内容,并结合了Equinox框架的实践经验,旨在帮助读者更好地理解和应用OSGi技术。 本书共分为四...

    Spring基础教程

    #### 四、总结 通过上述步骤的学习和实践,可以全面掌握如何使用Spring框架来开发一个完整的Web应用程序。Spring框架的强大之处在于它不仅仅是一个简单的依赖注入容器,还提供了许多高级特性,如事务管理、AOP支持...

    Eclipse 安装配置总结.doc

    - 使用命令行参数`-startup plugins/org.eclipse.equinox.launcher_1.1.0.v20110502.jar`来快速启动。 - **清理无用插件**: - 定期检查并移除不再使用的插件。 - 通过**Help > About Eclipse SDK > Installation...

    eqnx-serial:用于Equinox(现已失效)SST-MM48p SerialModem卡Linux驱动程序

    总结来说,"eqnx-serial"是一个针对Equinox SST-MM48p SerialModem卡的Linux驱动程序,主要用于使老式硬件在Linux系统中运行。尽管该驱动可能已过时,但其源代码仍然可以作为学习和理解Linux驱动开发的实例。如果你...

    osgi总结文档收藏

    1. Equinox和Felix:常见的OSGi容器有Equinox(由Eclipse基金会维护)和Felix(Apache项目)。它们提供了一个运行环境,负责管理bundle的生命周期,处理服务注册和查找,以及类加载等任务。 2. 版本管理:OSGi支持...

    计算清明节日期算法python例子.rar

    总结来说,计算清明节日期的关键在于理解农历与阳历的转换规则,并利用Python的`datetime`模块进行日期操作。通过编写自定义函数,我们可以方便地获取任意年份的清明节日期。这个过程不仅可以帮助开发者更好地理解和...

    四大OSGI框架最新技术对比分析

    总结 通过对这四大 OSGi 框架的对比分析可以看出,每个框架都有其独特的优势和局限性。Apache Felix 以其全面的服务支持和轻量级的特性脱颖而出;Eclipse Equinox 依托于 Eclipse 社区的强大支持而备受欢迎;Spring...

    OSGI实战-若干问题.txt

    **总结:** 通过上述分析,我们可以看到在OSGI环境中遇到的问题往往涉及多个方面的配置与调试。正确处理这些问题不仅需要理解OSGI的基本原理,还需要对具体的工具(如Eclipse)有深入的了解。希望上述解决方案能够...

    osgi 实战 pdf

    以下是对该书籍核心知识点的总结: ### OSGi简介 OSGi(Open Service Gateway Initiative)是一个模块化平台,用于构建和管理复杂的软件系统,尤其是Java应用。它提供了一种标准的方法来封装和部署代码,允许动态...

    OSGi实战进阶篇

    ### OSGi实战进阶篇知识点总结 #### 一、序言与背景 - **序言**:作者从个人经历出发,表达了对于插件体系结构的兴趣,并提到了早期接触的一些工具,如Ant和Maven,这表明作者对于构建工具及模块化开发有着深厚的...

    Spring基础教程.pdf

    #### 五、总结 通过本教程的学习,开发者将掌握如何使用Spring框架构建一个完整的三层架构的web应用程序,从环境搭建、框架集成、功能实现到页面设计,逐步深入理解Spring的核心概念和技术要点。Spring与Struts、...

    spring基础教程

    #### 五、总结 通过以上步骤,我们完成了从下载工具、配置环境到开发具体功能的过程,最终实现了基于Spring框架的MyUsers应用程序。本教程不仅涵盖了Spring的基本概念和使用方法,还介绍了如何与其他框架(如Struts...

Global site tag (gtag.js) - Google Analytics