写点什么

比较 Eclipse 扩展和 OSGi 服务

  • 2008-01-29
  • 本文字数:1213 字

    阅读完需:约 4 分钟

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

2008-01-29 00:021329
用户头像

发布了 150 篇内容, 共 45.6 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

CDN百科第八期 | 我的网站到底需不需要CDN加速?

阿里云Edge Plus

网站 CDN 云直播

IT世界里的《三十而已》:不比包包的男士们在比什么?

脑极体

服务器是什么?其作用及有哪些分类?

德胜网络-阳

服务器

案例解读:深入理解浏览器的缓存机制

华为云开发者联盟

缓存 浏览器 服务器 缓存穿透 华为云

判断链表相交

GalaxyCreater

算法

What's New in Dubbo-go v1.5

apache/dubbo-go

dubbo Go 语言

BIGO技术 | Paxos的工程实践与极致优化

InfoQ_3597a20b53cc

BIGO

判断两个链表是否合并

Z冰红茶

区块链在公益慈善行业的应用研究

CECBC

区块链技术 公益组织 治理 数据透明

应用开发基础之-数据结构与算法

superman

【好书推荐】《Python黑魔法指南》-附高清PDF版

华为云开发者联盟

Python 开发者 书摘 python3.7 书籍推荐

第四范式自动化推荐系统:搜索协同过滤中的交互函数

天枢数智运营

人工智能 推荐系统 搜索

算法题:链表的第一个合并节点

破晓_dawn

极客大学

程序员的晚餐 | 7 月 27 日 美味鲫鱼豆腐汤

清远

美食

JVM系列之:String.intern的性能

程序那些事

性能 JVM string GC

NameNode架构图解

我是个bug

Java 大数据 hadoop

nginx安装配置(windows)

陈靓-哲露

敏捷开发:一文了解影响地图和用户故事地图之间的那些事儿

华为云开发者联盟

产品设计 敏捷开发 后端 地图 开发流程

百万并发「零拷贝」技术系列之Java实现

码农神说

Java 架构 高性能 零拷贝

硬核干货:葡萄城 SpreadJS 前端表格技术分享

葡萄城技术团队

Excel SpreadJS 表格控件 表格开发

4. JSON字符串是如何被解析的?JsonParser了解一下

YourBatman

Jackson JSON库

极客大学架构师训练营-单向链表相交问题

Geek_zhangjian

极客大学架构师训练营 - 本周总结

Geek_zhangjian

区块链的现象级应用应该什么样子

CECBC

产业落地 政策扶持 区块链革命 价值传递

HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第2章HTML基础知识

Geek_8dbdc1

CSS html

什么是数字孪生,它的应用价值在哪里?

华为云开发者联盟

AI IoT 数字化 汽车电子 工业互联网

BIGO技术 | Paxos的工程实践与极致优化

InfoQ_3597a20b53cc

技术

《深度工作》学习笔记(2)

石云升

学习 专注 深度工作

河南省区块链产业联盟成立暨可信区块链技术创新大会启幕

CECBC

可信区块链 提升核心技术 产业联盟 产学研用

拒绝贴标签的懒惰

zhoo299

随笔杂谈

判断两个链表是否重合

LEAF

比较Eclipse扩展和OSGi服务_Java_R.J. Lorimer_InfoQ精选文章