`
Irving_wei
  • 浏览: 132549 次
  • 性别: 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 应该继承扩展哪个类呢

相关推荐

    基于FireFox的Plugins的开发(带测试用源码)

    **基于Firefox的Plugins开发详解** 在互联网浏览器领域,Firefox(火狐)以其开源、安全、可定制性等特性,吸引了大量的开发者和用户。为了增强Firefox的功能,开发者常常会利用插件(Plugins)来扩展其能力。本...

    java程序员开发必备的利器

    3. **Git**: 版本控制系统是现代开发不可或缺的一部分,Git能够方便地管理代码历史,协同开发,以及解决合并冲突。 4. **JDK (Java Development Kit)**: Java开发的基础,包含了Java编译器javac、JVM(Java虚拟机)...

    VC++开发VLC播放器需要的plugins库文件

    在“VC++开发VLC播放器需要的plugins库文件”这个压缩包中,`plugins`目录包含了VLC运行所需的多种插件。这些插件可能包括音频解码器、视频解码器、音频渲染器、视频渲染器、网络协议插件等。开发者需要将这些库文件...

    redmine自定义插件开发

    "红矿自定义插件开发" 红矿(Redmine)是一款基于Ruby on Rails的开源项目管理工具,提供了强大的插件机制,允许开发者创建自己的插件,以满足不同的需求。在本文中,我们将详细介绍如何开发一个红矿自定义插件,...

    jmeter-plugins-manager-1.7.jar

    对于任何想要深入利用JMeter进行性能测试的用户来说,掌握JMeter Plugins Manager的使用是必不可少的技能。通过熟练使用这个工具,我们可以更高效地进行测试,更快地获取结果,从而更好地优化我们的应用程序。

    VLC3.0的SDK文件和plugins文件夹方便开发使用

    在3.0版本中,VLC提供了SDK(Software Development Kit)和plugins文件夹,以帮助开发者更便捷地进行相关应用程序的开发。 **VLC SDK** SDK是软件开发工具包的缩写,对于VLC而言,它包含了一系列API(应用程序接口...

    jmeter-plugins-manager-1.7.jar JMeter 管理插件

    为了扩展JMeter的功能,社区开发了各种插件,其中JMeter Plugins Manager就是一款不可或缺的辅助工具。本文将详细探讨JMeter Plugins Manager的1.7版本及其核心功能。 JMeter Plugins Manager的全名是“jmeter-...

    JMeterPlugins-Extras

    JMeter本身是一款强大的开源性能测试工具,由Apache基金会开发,主要用于测试Web应用的负载和性能。它支持多种协议,如HTTP、FTP、SMTP等,同时也可以模拟多种用户行为,例如并发请求、脚本录制与回放等。而JMeter...

    jmeter-plugins-manager1.7插件管理器

    JMeter Plugins Manager 1.7 是一款专门为Apache JMeter设计的插件管理工具,它极大地简化了在JMeter中安装、更新和管理第三方插件的...对于任何需要在JMeter上进行性能测试的团队,这款插件管理器都是不可或缺的工具。

    JMeterPlugins-Standard.jar和JMeterPlugins-Extras.jar.rar

    然而,尽管JMeter本身功能强大,但有时其内置的功能并不能满足所有测试需求。此时,JMeter插件就显得尤为重要。本文将深入探讨“JMeterPlugins-Standard.jar”和“JMeterPlugins-Extras.jar”这两个关键插件,以及...

    jmeter-plugins-cmn-jmeter-0.3

    将 jpgc-graphs-basic-2.0.zip 解压缩后只有一个 lib 目录,该目录下有一个 ext 文件夹和一个 jmeter-plugins-cmn-jmeter-0.3.jar 包,ext 文件夹中有 jmeter-plugins-graphs-basic-2.0.jar 和 jmeter-plugins-...

    JMeterPlugins-Standard与Extras

    JMeterPlugins项目是由第三方社区开发的一系列插件集合,它极大地丰富了JMeter的功能,使得测试更为全面和高效。 JMeterPlugins-Standard包含了多个标准插件,这些插件涵盖了各种测试场景的需求。例如: 1. **响应...

    JMeterPlugins-Extras与JMeterPlugins-Standard

    《JMeterPlugins-Extras与JMeterPlugins-Standard:提升JMeter服务器监控能力的利器》 在性能测试领域,Apache JMeter是一款广泛应用的开源工具,它主要用于模拟大量并发用户执行操作,以此来测试服务器、网络或者...

    jmeter插件管理器 jmeter-plugins-manager-1.4下载

    总的来说,JMeter Plugins Manager是JMeter测试环境中不可或缺的一部分,它使得管理和使用JMeter插件变得更加便捷,提升了测试工作的效率。正确安装和使用这个工具,可以帮助测试人员更好地发挥JMeter的潜力,满足...

    liferay plugins sdk 5.2.3

    Liferay Plugins SDK 5.2.3 是一个专门用于开发Liferay Portal的portlet和其他插件的应用开发工具包。Liferay Portal是一款开源的企业级内容管理平台,它提供了丰富的功能,包括网站构建、社交网络、协作工具等。这...

    JMeterPlugins-Extras/Standard+ServerAgent 打包

    1.解压客户端的两个文件,进入其路径JMeterPlugins-Extras(Standard)-1.3.1\lib\ext,复制JmeterPlugins-Extras.jar(JmeterPlugins-Standard.jar)两个文件,放到JMeter客户端的lib/ext文件夹中,打开JMeter,可在监听...

    maven工具包 maven plugins

    ** Maven工具包与Maven...总结来说,Maven工具包和Maven插件是Java开发中不可或缺的工具,它们帮助开发者自动化项目构建,简化依赖管理,提升开发效率。正确理解和使用Maven,能够使项目管理更加规范,降低维护成本。

    plugins

    在IT领域,"plugins"(插件)是一个广泛使用的概念,尤其在软件...在实际应用中,"plugins"这一概念无处不在,从日常使用的浏览器到复杂的开发环境,它们都扮演着不可或缺的角色,极大地丰富了软件的功能和用户体验。

    JMeterPlugins-Extras.jar

    而JMeterPlugins-Extras.jar文件则是JMeter生态中的一个重要补充,它提供了许多原生JMeter不包含的额外功能,极大地丰富了我们的性能测试能力。 JMeter本身提供了基础的HTTP、FTP、数据库等协议的测试元件,但面对...

    jmeter-plugins-manager-1.3.jar.zip

    总的来说,"jmeter-plugins-manager-1.3.jar.zip"是JMeter用户不可或缺的工具,它简化了插件的安装和管理流程,让JMeter的功能得以无限扩展。在进行性能测试时,熟练掌握和利用Plugins Manager,可以提升我们的工作...

Global site tag (gtag.js) - Google Analytics