Welcome 微信登录

首页 / 软件开发 / JAVA / Eclipse中的扩展点机制存在的理由

Eclipse中的扩展点机制存在的理由2011-08-13朱兴众所周知,Eclipse平台本身就作为一个成功的OSGI应用,从技术层面讲,Eclipse本身就是由OSGI协 议驱动的(我想,这句话大家已经听的很多遍了~_~)。同时Eclipse对OSGI组件机制做了有力的扩充,也 就是我们所熟知的扩展点(Extension Point)机制,关于扩展点的支持也作为Equinox(Eclipse的OSGI 协议实现)一部分呈现给了广大的Eclipse开发者和用户。关于为什么会存在扩展点这个补充,也是国外 技术论坛上经常讨论的话题,在这也斗胆猜测一把,仅供大家参考。

【OSGI的关键特性和适用场景】

OSGI为我们提供了一个追求模块化的方式来开发、部署、运行、管理组件(OSGI Bundle)的机制,其 主要的技术特征包括模块化、生命周期管理、松耦合交互等。OSGI为我们提供了组件模块化所需要的技术 ,并允许以服务等方式来实现模块之间的动态松耦合交互,这也就为我们开发盼望已久的Pluginable System打下了坚实的基础(有关OSGI的技术,可以参加OSGI协议和国外论坛上的一些关于OSGI具体应用的 讨论)。本质上讲,OSGI在追求组件模块化,并希望组件本身具备黑盒的效果,其并没有投入很大精力来 关注如何让一个组件更容易扩展,更加开放。

通过上面的阐述我们可以看出来,OSGI本身适用于那种建立模块化、动态管理、即插即用的组件化系 统,如果应用于产品软件的开放,对建立一个可靠的内核是非常有用的,OSGI对应的一些成功应用包括 Eclipse、JBoss AS、IBM Websphere等。

【Eclipse的需求】

Eclipse本身作为一个基础平台存在,其关键需求就是来方便用户扩展,并能够很方便的和Eclipse平 台本身做无缝集成。说白了,在Eclipse中一个组件(Eclipse Plug-in)的任务大致为二:提供扩展实现 或者声明扩展需求(当然,不完全针对库插件、feature…)。我们知道,一个软件产品的技术实现必须 要以符合产品需求为基础,Eclipse作为一个软件产品最大的需求就是如何方便的允许用户扩展并无缝地 集成这些扩展。

如果要满足Eclipse的这种需求,需要一个组件(Eclipse plug-in)还需要具备什么关键特质呢?开 放、易扩展!!!

显然,OSGI本身并不能满足Eclipse的部分关键需求(面向开发者和用户的需求),但是OSGI所带来的 模块化、声明周期管理、懒加载等机制都是Eclipse迫切需要的,自然选择了OSGI来作为Eclipse内核的驱 动协议。考虑到扩展和便于无缝集成这两大关键需求,Eclipse在OSIG之上面向用户提供了扩展点的机制 ,以一种xml描述的方式来配置组件之间的扩展关系,涉及到的三个核心概念便是我们熟知的:扩展点 (Extension Point)、扩展(Extension)和扩展注册表(Extension Registry)。