写点什么

比较 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:021741
用户头像

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

关注

评论

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

再聊加班的感受

GeekYin

成长感悟

正则表达式入门与进阶

Studying_swz

正则表达式 10月月更

Glibc---_IO_file_xsputn函数逻辑分析

桑榆

源码刨析 10月月更 C++

一款轻巧快速的跨平台文档阅读器!

Jackpop

spring整合mybatis、springMVC(总结)

Studying_swz

spring 10月月更

开源免费!自己动手撸一个在线云盘!

Jackpop

“程”风破浪的开发者|区块链与Web3.0辨析

timerring

区块链 Web3.0 10月月更 “程”风破浪的开发者 Web2.0

golang中的字符串

六月的

golang 字符串

Spring Boot概述(一)

Studying_swz

10月月更

2022年都快结束了,Java的这些新技术、热门技术,你不会还不知道吧?

wljslmz

Java 微服务 后端 10月月更 jdk19

【kubernetes技术专题】Kubernetes架构分析介绍篇(进阶篇)

码界西柚

Kubernetes 10月月更

私有云建设思路

阿泽🧸

私有云 10月月更

“程”风破浪的开发者|元宇宙?Are you Sure?

六月的雨在InfoQ

虚拟世界 平行世界 元宇宙 10月月更 “程”风破浪的开发者

中东地区被低估,沙特偏好企业服务和云,新加坡稳定,东南亚复杂|出海

B Impact

“程”风破浪的开发者 | 基建及团队建设的方法论

甜点cc

团队管理 学习方法 基建 “程”风破浪的开发者

Docker | 网络及原理探究

甜点cc

Docker 运维 10月月更

测试需求平台6-数据持久化与PyMySQL使用

MegaQi

Python 10月月更 测试开发实战

Docker | 网络模型以及容器通信

甜点cc

Docker 运维 10月月更

Centos7最小安装配置 | 运维 | Linux

Appleex

Linux 运维

开发者神器,代码文档终于有救了

Jackpop

ZooKeeper应用案例

穿过生命散发芬芳

zookeeper 10月月更

云计算商业周期超过其他产业,技术的天花板是商业机遇

B Impact

Excel 文件的读取

芯动大师

学习方法 Python Monad Excel数据分析

在平面国生活,会是怎样的体验?

脑极体

人工智能

高逼格!程序员专属音乐播。。。

Jackpop

阿里云无影向RPA开闸,金智维、影刀、弘玑已落地|生态商机

B Impact

消息推送渠道那么多,该怎么设计消息中心?

产品海豚湾

产品经理 产品设计 消息系统 产品架构 10月月更

【Java深入学习】一个经典问题-消费者和生产者问题-下

Geek_65222d

10月月更

Spring Boot「11」查看所有托管的 Bean

Samson

Java spring 学习笔记 spring-boot 10月月更

2022-10-22:以下go语言代码输出什么?A:moonfdd1;B:编译错误;C:运行时 panic。 package main import “fmt“ func main() {

福大大架构师每日一题

golang 福大大 选择题

AfterShip 国际化获客冷启动经验:痛点、借力、连接

B Impact

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