`
Irving_wei
  • 浏览: 130352 次
  • 性别: Icon_minigender_1
  • 来自: Heaven
社区版块
存档分类
最新评论

可遇不可求的plugins开发程序员

阅读更多

从开始的SWT学习,到现在的插件开发尝试,我一直存在着一个问题,这玩意有没有用?

打开“前程无忧”,里面对这方面的人的需求貌似也不算多。

曾经问过导师:插件开发是一个有着大好前景的方向还是一个没有发展希望的方向?

导师跟我说:插件程序员是可遇不可求的。

一知半解....

今天在CSDN上看到一篇文章,让我茅塞顿开,遂转之...

 

(题记:曾经专职插件开发多年,是以谈谈插件开发作为在CSDN的第一篇文章。)

大部分情况下,Eclipse是作为一款优秀Java开发平台和开源领域新概念的工具集成工具而进入大众视野;而Eclipse内涵的核心体系 —— PDE (Plugin Development Enviroment) 应用虽然逐渐为更多的人了解,但是深入实践的插件开发者毕竟还是一个很小的群体。

在了解和不了解之间,人们往往形成了一个印象:“哦,插件开发?这很偏僻,跟我们要做的事情没什么关系吧?”  甚至,有些正在编写插件程序的程序员也觉得自己做的这个事情很生门。

然而,插件开发并非另类:插件开发是纯正的面向对象(OO)的分析(OOA)、设计(OOD)和编程(OOP)。人们之所以疑惑的原因是他们没有写过插件代码、或者是写过但还没有认清楚插件开发的本质。

插件体系结构  —— 最为合适的平台程序体系结构

Eclipse基于插件体系结构设计。所谓插件体系结构,实质上就是一种Service / Components的程序结构,即由一个核心服务加一组可插拔、自定义、有层次的组件,由核心服务发现和加载组件定义、管理组件之间的依赖关系,并且,这个体系结构是开放的。

Eclipse孕育之初的目标就不仅仅是提供一款优秀的Java Dev Tool,它一开始就是以开放的、具有卓越集成扩展能力的开发工具平台为理想,要求未来可以在这个平台上集成和扩展更多的功能组件。持续的扩展能力和可选择集成是Eclipse基础要素之一,因此它需要一个动态的可插拔方式集成组件的体系结构,无论从功能角度还是从性能角度看来,选择插件体系结构是必然。

更准确的说,插件体系结构是遵循OSGI (Open Services Gateway Initiative)标准的一个设计。特别突出的是,通过扩展、扩展点、组件依赖这一组概念的引入,这种插件体系结构做到了最大程度上的软件复用—— 功能和组件级别的复用。

虽然起初Eclipse架构师可能并未在意,但是多年前设计的这种插件体系结构结构与今天的SOA有着天然的相似,它们旨在解决的问题性质也正是它们拥有强大生命力的精神要义:开放的体系结构。无论是作为应用程序结构的插件体系结构还是企业应用架构大势所趋的SOA,这种体系结构上的开放性保证了软件系统在系统扩容、横向集成上的持久生命力。

插件开发 ——  99%的OO

插件(Plugin)就是这种Service/Components结构的功能组件的发布单元;每个插件有一个插件描述文件(Plugin.xml)和一个刻画了插件生命周期的插件类(Plugin Class) 。除去这些并不占据显著工作量的部分之外,插件项目完全是一个Java Project,尽管部分人抱怨编写一个插件时可能代码中充斥了依赖插件的API,但是,庞大的API正是扩展开发的的特征:如果你想享受平台底层的好处,那么你就对平台依赖更多。

从这个层面认识插件开发,一旦能够随心所欲的驾驭这些错综繁复的API为你解决相当一部分基础性工作,插件开发中99%的工作就是充分展现你在OO领域的领悟程度和创造才华,完全按照你自己的意思设计和编码。而一个优秀的OO Desingner 和 Programmer从来就不应该惧怕站在一堆API之上的基础上完成自己的作品 —— 创造力和领悟力在程序员而言从来就不应该是孤立的。

Eclipse  —— OO作品的典范

翻开Eclipse的源代码,无论是为实现一个概念级别的大粒度的功能特性、还是为实现一个简单的如对话框这样的一个具体界面,面向对象编程中的一切优良思想在大师的代码中无所不在。如果说Eclipse是一部优秀作品,那么这部作品中最有价值的部分除了选用插件体系结构、提供可以复用的强大的编辑工具基础特性之外,Eclipse更加是面向对象思想的典范。

如果你是一个设计模式的拥戴者,比起《设计模式》一书,你在Eclipse中能发现更多因为实际需要引入的令人回味悠长的经典的模式应用。

结束语

在我曾经做的一个系列的Eclipse培训中,我就告诉新入行的同事们,插件开发并非另类,我相信帮助他们正确的认识一个可能还没有激起他们兴趣的专业很重要。这不仅仅是帮他们做好情绪上的准备,更是因为我希望他们这样理解和体会插件开发。

一个做过两三年插件开发的程序员如果还是抱怨他们所作的工作“偏门”的话,我认为这是不应该的。程序员应该对深入接触过的系统有自己的思考、有自己的理解并从中获益。任何一个有影响的软件产品总有它值得称道之处,即使你对它有不满也可以反思反思它这种程度的存在的根据是什么。

Eclipse是成功的,插件体系结构也是成功的;随着Eclipse社区影响力与日俱增、以及RCP被不断的应用解决一个又一个的问题,Eclipse插件开发也许就是你未来工作的一部分。献此拙篇,更多的是希望在更大范围澄清人们对于插件开发长期的模糊的疑惑


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chirui/archive/2007/08/13/1740778.aspx

 

很实在的一篇文章,多谢指点。

分享到:
评论
2 楼 Irving_wei 2011-11-29  
刚开始学习plugin 开发,你的分享很有用
请问如果要开发一个toolbox 应该继承扩展哪个类呢
fiona_zhu 写道
刚开始学习plugin 开发,你的分享很有用
请问如果要开发一个toolbox 应该继承扩展哪个类呢

建议去看看RCPToolbox
1 楼 fiona_zhu 2011-11-26  
刚开始学习plugin 开发,你的分享很有用
请问如果要开发一个toolbox 应该继承扩展哪个类呢

相关推荐

Global site tag (gtag.js) - Google Analytics