Equinox 介绍

 由  xuchen 发布

1.Equinox项目概述

OSGi是基于Java的服务平台的规范,本质是将Java面向对象的开发转向面向组件和服务的开发,具有服务组件模块化,动态加载应用等特点。Equinox 则是Eclipse所使用的OSGi框架,是Eclipse强大的插件体系的基础,是Eclipse著名的PDE开发环境的底层,Eclipse 的稳定可靠性也为该框架带来了声誉。

Equinox是EclipseRT工程的一部分,为Eclipse提供基于OSGi的运行时环境。从代码的角度来看,Equinox不仅是OSGi R4核心标准规范的实现,它还借助Eclipse环境的一些自身的特点,提供了扩展OSGi R4提供的Bundle,以及运行基于OSGi的系统的基础架构。

2.Equinox代码框架概览

可以用tortoiseCVS从eclipse官方的cvs库获取代码。 :pserver:anonymous@dev.eclipse.org:/cvsroot/rt/org.eclipse.equinox

可以发现一共有四个文件夹:
framework、compendium、components和incubator

其中framework文件夹、compendium文件夹、componets文件夹下面都是Equinox实现的bundle,incubator文件夹下面是一些demo。

2.1Equinox对OSGiCore FrameworkR4标准的实现

Framework文件夹中有四个bundle,分别为:

  1. org.eclipse.equinox.executable - 包含native的代码,例如win平台下的win32.win32.dll,eclipse.exe。它用来寻找和运行org.eclipse.equinox.launcher,从而进一步运行框架。

  2. org.eclipse.equinox.launcher - 用于启动equinox,包括启动参数处理,帮助Equinox建立运行环境,如类加载路径,运行配置参数等等。

  3. org.eclipse.osgi - OSGi核心框架标准规范的实现,打包后也就是我们经常看到的org.eclipse.osgi.jar。

  4. org.eclispe.osgi.tests - 测试代码。

2.2Equinox 提供的服务

Equinox不仅实现了OSGi Core Framework R4,还实现了很多服务。其中有一些服务是OSGi标准中规定的,有一些则不是,这些服务对应的bundle主要在compendium文件夹下面,org.eclipse.equinox.common和org.eclipse.equinox.registry在的componets文件夹下。

OSGi标准中定义的服务:

服务 服务说明 Bundle名字
Application Container OSGi R4 MEG中的应用程序容器服务 org.eclipse.equinox.app
Configuration Admin OSGi R4规范中Configura Admin服务的实现 org.eclipse.equinox.cm
Device Access Service OSGi R4规范中的Device Access 标准服务的实现, 服务自动检测添加的或者分离的硬件设备,并且自动下载和启动设备驱动器 org.eclipse.equinox.device
Declarative Services OSGi R4规范中的Declarative Service标准服务的实现,服务通过注册服务和管理服务的依赖简化了OSGi服务的使用 org.eclipse.equinox.ds
Event Admin OSGi R4规范中的Event Admin服务,服务提供了基于事件发布和订阅模型的bundle间的通讯机制。 org.eclipse.equinox.event
HTTP Service OSGi R4规范中的HTTP服务实现。服务提供了可以运行HTML和Java servlet的HTTP服务器。 org.eclipse.equinox.http
IO Connector OSGi R4规范中IO Connector服务的实现。服务采用了J2ME中的Connector框架模型,并且允许OSGi bundle对它进行扩展。 org.eclipse.equinox.io
Initial Provisioning OSGi R4规范中Initial Provisioning的实现。服务定义Management Agent如何访问服务平台。 org.eclipse.equinox.ip
Log Service OSGi R4规范中 Log服务的实现。服务提供了针对OSGi环境的日志功能。 org.eclipse.equinox.log
Metatype Service OSGi R4规范中的Metatype服务的实现。允许服务指定可以使用作为参数的数据信息的类型。 org.eclipse.equinox.metatype
Preferences Service OSGi R4规范中的Preferences服务的的扩展。 org.eclipse.equinox.preferences
Extension Registry 允许bundle通过使用显式标记和延迟实例化通信和协作,和OSGi服务以及DS有一些类似,但是也有一些不同的构件和管理特点 org.eclipse.equinox.registry
User Admin Service OSGi R4规范中的用户管理服务实现。服务支持用户、小组以及一定的身份验证功能。 org.eclipse.equinox.useradmin
Wire Admin Service OSGi R4规范中的服务通信拓扑管理服务。可以通过用户接口或者管理程序来控制OSGi服务平台中服务的连线。 org.eclipse.equinox.wireadmin

非OSGi标准中定义的服务:

服务 服务说明 Bundle名字
Common Utility Bundle 由一组Eclipse工具类(如IStatus,Assert,IAdaptable等)组成的实用程序Bundle。该Bundle也可以在非OSGi环境中独立使用。 org.eclipse.equinox.common
HTTP Servlet 该Bundle为在Equinox中发布其他servlet处理引擎(如传统的应用服务器),为OSGi HTTP服务提供支持。 org.eclipse.equinox.http.servlet
HTTP Jetty 该Bundle封装Jetty为标准的OSGi HTTP服务。 org.eclipse.equinox.http.jetty
Equinox Utilities 实现OSGi服务的Equinox Bundle中经常使用的功能类库 org.eclipse.equinox.util
OSGi Services 包含了OSGi指定的服务API,人们开发或者部署服务就可以独立于规范了。 org.eclipse.osgi.services
OSGi Utilities Bundle包括一组OSGi指定的功能,例如Service Tracker。 org.eclipse.osgi.util

此外,还有一些bundle,可以提供服务器功能,展示静态内容或者是运行jsp和servlet,这些bundle如下表所示。需要注意的是,像javax.servlet、javax.servlet.jsp、org.mortbay.jetty这些bundle由于大量使用了第三方的库,并没有包括在Equinox项目中,而是在Orbit项目中。

org.eclipse.equinox.http.servlet HTTP Servlet 上面提到过这个服务,该Bundle为在Equinox中发布其他servlet处理引擎(如传统的应用服务器),为OSGi HTTP服务提供支持。
org.eclipse.equinox.http Http Registry 上面也提到过这个服务,可以注册servlet、资源和JSP,而不使用基于OSGi注册机制的编码
org.eclipse.equinox.http.servletbridge HTTP ServletBridge 该Bundle为底层的应用服务器(如Tomcat,Jetty等)发布为OSGi HTTP服务提供一层封装。封装的应用服务器必须安装该servlet bridge。
javax.servlet Servlet API Servlet规范标准接口API的Bundle封装。
javax.servlet.jsp Servlet JSP API Servlet JSP API接口的Bundle封装。
org.mortbay.jetty Jetty 嵌入式Jetty实现的Bundle封装。目前Equinox提供的Jetty实现版本为5.x。
org.eclipse.equinox.http.jetty HTTP Jetty 上面提到过,该Bundle封装Jetty为标准的OSGi HTTP服务。

2.3Equinox的其他方面

除了上面提到的Bundle,Equinox还有一些其他方面的工作,例如:

1) Equinox Security是用来确保Equinox运行时的安全,使用户和管理员可以完全放心的在用户或者是代码源不完全友善的环境下使用和部署产品。它的目标包括:支持用户凭证管理;提供扩展用户身份验证框架;实现代码授权的灵活机制;整合security-aware的项目。

2) Equinox P2为基于OSGi的应用提供支持,它可以取代更新管理器,可以用于安装和管理 Eclipse 插件。

3) Equinox Weaving用来将Equinox和AspecJ结合,也就是说使Equinox具有面向切面的特性。

3.使用Equinox进行开发

Equinox作为一个OSGi框架,是可以在上面进行开发的。具体内容参见《OSGi开发环境的建立和HelloWorld》

4. 总结

以上是对Equinox项目的概述,可以说,Equinox是目前应用最广的OSGi框架,在后面,我们也会对Equinox是如何实现OSGi Framework Core 规范进行分析。


wmz 2015-10-28 19:21

一个十分NB的基于OSGi的开源开发平台JXADF,官网提供在线演示、丰富文档、免费下载,详细参见:http://osgi.jxtech.net

顶(0) 踩(0) 回复
查看评论