【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

关注

评论

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

如何在FL Studio中对整首歌曲音量进行调整

懒得勤快

【SpringBoot技术专题】「JWT技术专区」SpringSecurity整合JWT授权和认证实现

洛神灬殇

spring security springboot JWT 8月日更

Android ANR应用无响应

W🌥

android 8月日更

MySQL 系列教程之(五)DDL 操作:建库建表

若尘

MySQL 数据库 8月日更

稳了!工业质检蝉联第一

百度大脑

智能制造

基于java springboot体育馆预约微信小程序源码(毕设)设计开发

清风

Java 小程序 源码 毕业设计

爬虫遇到反爬机制怎么办? 看看我是如何解决的!

Python研究者

8月日更

《程序员修炼之道 - 从小工到专家》吐血解读

博文视点Broadview

借助云网融合优势,某省运营商打造下一个十年增长引擎

BoCloud博云

云管理

如何将知识引入机器学习模型提升泛化能力?

华为云开发者联盟

机器学习 算法 数据 模型 物理学

Hadoop生态系统

Mike

2021,编程语言如何选择?

程序员鱼皮

Java c++ Python JavaScript Go 语言

走!跟着浪潮云洲去挖矿

浪潮云

云计算

Hadoop安装与常用操作命令

Mike

MySQL安全加固方法分享

Simon

MySQL 数据库 数据安全

面向对象的原则是普遍适用么?

escray

学习 极客时间 如何落地业务建模 8月日更

“遇见”未来“编程”语言,面向组件编程,送给在校学生

清风

Java 小程序 毕业设计

史上最全Linux可观测最佳实践分享!建议先收藏~

观测云

云计算 Linux

fil有投资价值吗?投资fil的方式有哪些?

区块链 分布式存储 IPFS fil FIL投资

架构实战营 毕业总结

Dylan

架构实战营

架构实战营-模块二作业

俞立夫

架构实战营

堡垒机、防火墙以及跳板机分别是什么?

行云管家

云计算 运维 防火墙 堡垒机 跳板机

AOC萌新探索:搭建和体验在线AOC环境

华为云开发者联盟

Python 网络 自动化运维 AOC 网络设备

复旦大学附属中山医院钱琨:健康医疗大数据时代下的智慧医院建设

星环科技

大数据 医疗 数据能力

30个Kafka常见错误小集合

王知无

技术加持、服务先行:北鲲云超算平台助力生命科学领域研究与发展

北鲲云

sql task01 环境搭建

橙橙橙橙汁丶

摊牌了!哈利波特的“隐形斗篷”就是我想要的

百度开发者中心

人工智能 AI 最佳实践 行业资讯

博文干货|5张图带你快速入门 Pulsar 的存储引擎 BookKeeper

Apache Pulsar

pulsar bookKeeper

Vue进阶(三十八):v-for 中 :key 到底有什么用?

No Silver Bullet

Vue key 8月日更

合约量化交易系统开发技术

薇電13242772558

区块链

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