QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

关注

评论

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

“2024杭州人工智能展会·杭州智博会”推进人工智能产业创新发展

AIOTE智博会

智博会 人工智能展 智慧城市展 杭州智博会

Kosmos实战系列:MySQL Operator有状态服务的跨AZ集群平滑迁移

畅聊云原生

软件测试/人工智能丨卷积神经网络,与普通的神经网络有何不同

测试人

人工智能 软件测试

改进了编排控制并增强了推理的可视性,Agents for Amazon Bedrock 现已上市

亚马逊云科技 (Amazon Web Services)

API re:Invent Amazon Bedrock

E往无前 | get正确使用姿势!腾讯云大数据ES日志场景优化案例回顾

腾讯云大数据

ES

Solidity之旅(十)OOP-抽象合约

BSN研习社

教你使用Prometheus-Operator进行K8s集群监控

不在线第一只蜗牛

k8s K8s 多集群管理 多集群 集群监控

AI浪潮下,大模型如何在音视频领域运用与实践?

阿里云CloudImagine

云计算 视频云

多云网络互通问题怎么解决——SD-WAN

Ogcloud

云计算 网络 多云服务 多云架构 SD-WAN

某公司案例分析

尚思卓越

运维 堡垒机

NFT卡牌DAPP质押系统开发丨详情开发

l8l259l3365

软件测试/人工智能丨人工智能系统中,大数据模块发挥怎样的作用

测试人

人工智能 软件测试

NFT开发:NFT 令牌门控Web3中的变革性品牌体验

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

3分钟搞懂什么是Docker

伤感汤姆布利柏

Docker 镜像

Python内存管理:从入门到精通的完全指南

技术冰糖葫芦

API 接口

浅析JAVA日志中的几则性能实践与原理解释

阿里技术

Java 原理 性能实践

Milvus 老友汇|AI、云原生与向量数据库的精彩碰撞回顾!

Zilliz

云原生 Milvus AIGC KubeBlocks

小红书基于零信任 SASE 办公安全解决方案,斩获 “IDC 中国 20 大杰出安全项目”

小红书技术REDtech

大数据 网络安全 安全

纯粹+享受,独立开发者成功踏上HarmonyOS“新大陆”

最新动态

最后一天!龙智DevSecOps研讨会年终专场“如何打好DevOps基础、赋能创新”即将截止报名

龙智—DevSecOps解决方案

软件测试/人工智能丨神经网络的概念,它与深度学习是什么关系

测试人

人工智能 软件测试

企业网络新阶段:SD-WAN在云时代的关键作用

Ogcloud

云计算 网络 SD-WAN 云时代 WAN

基于 Flink 构建实时数据湖的实践

字节跳动云原生计算

大数据 数据湖 云原生 flink 实战

企业用户混合云组网的新方式——SD-WAN

Ogcloud

网络 SD-WAN 混合云 混合云架构 组网

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