InfoQ

新闻

比较Eclipse扩展和OSGi服务

作者 R.J. Lorimer 译者 宋玮 发布于 2008年1月29日 上午12时2分

社区
Java
主题
标签
OSGi,
Eclipse
Eclipse扩展和OSGi服务的本质及意图都非常相像。尽管它们很类似,但是由于它们背景不同,因此还是有很多不同点。Neil Bartlett曾经写了一篇文章,对Eclipse扩展及多种用途的OSGi服务进行了比较分析,最近,他又在其博客上以PDF的形式重新发布了这篇文章。这篇文章是特别为那些熟悉Eclipse注册库但不熟悉OSGi的Java开发者编写的。

比较开始于对常见混淆概念的解释,Eclipse扩展注册和OSGi服务层的共存导致了这些概念的混淆:
因为Eclipse在版本3.0中采用了OSGi运行时,在扩展注册(从一开始就是Eclipse的特性)和服务层(来自OSGi且先于Eclipse相关特性存在)之间就有了一些牵连。导致这种牵连的原因是这两种模型有些重叠,而且它们意图解决的问题都非常相似。然而常言道“the Devil is in the details(细节决定成败)”,这两种模型的差别还是非常大的,想将它们合并是不切实际的。因此,Eclipse plugin和RCP应用的开发者需要从这两者中做出选择。
Eclipse扩展注册基于的是定义在针对每个Eclipse plug-in的XML文件中的一系列条目。Bartlett描述了XML标记优于严格地使用可执行Java的各种好处。与Eclipse扩展相比,基础OSGi服务用规矩的Java代码来定义和注册,代码提供了多个行为实现。在描述到OSGi服务的时候,Bartlett解释了与Eclipse扩展相比其实现的内在区别以及相关的优缺点,并得出这一观点:
因此我们真正想要的是结合扩展和服务两者优点的某些东西。某些像服务一样是隐式动态的、但是像扩展一样是“按需”装载的东西。理想情况下,是可以简化应用程序开发者必须要编写的代码的某些东西。
那种认为Declarative Services可以满足各种情况的观点是不对的。因为Eclipse扩展和OSGi服务在不同的方面各有优缺点,创建Declarative OSGi Services是为了试图提供一种兼顾两种技术优点的方法。Declarative Services仍是相对较新的技术,适用于Eclipse3.3版(最新稳定版本),Declarative Services的初始版本已经可用了,可从Equinox下载站点单独下载

这篇文章的关键要素被总结成了一个用于比较的表格,该表格回答了Eclipse扩展以及所有以前描述过的各种OSGi服务(Services、Declarative Services、以及Spring-OSGi)的如下问题。
  • 什么是已注册的?
  • 它们是如何注册的?
  • 它们是如何消费的?
  • 什么是基数(cardinality)?
  • 它们何时被装载?
  • 怎样处理动态安装/卸载?
  • 缓存扩展/服务的引用会导致问题出现吗?
Neil Bartlett以如下看法作为文章的结论:
在这篇文章中,我已经概括地描述了Eclipse风格的扩展和OSGi风格的服务的优缺点。然而,我不希望我的读者不要单纯地认为“扩展不是动态的”或者“服务不能用于RCP应用”。恐怕这个问题太过敏感,根据你的需求的上下文自己做出评估是不可替代的。
想了解更多关于Eclipse Equinox和OSGi的关系,请访问Eclipse Equinox站点

查看英文原文:Comparing Eclipse Extensions and OSGi Services

可以选择来用 发表人 Jili Lv 发表于 2008年1月30日 上午6时6分
  1. 返回顶部

    可以选择来用

    2008年1月30日 上午6时6分 发表人 Jili Lv

    OSGi服务的局限性比较大,没有Eclipse的扩展机制灵活方便,Eclipse扩展特别适用于静态配置.OSGi服务必须以对象的方式提供,但另一方面,它与最新的Spring-OSGi 1.0结合紧密.可以选择来用.至于DS,还没试过.

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。