本书系统地介绍了SWT、Draw2D、GEF、JET等与Eclipse插件开发相关的基础知识,并且以实际的开发案例来演示这些知识的实战性应用,通过对这些实际开发案例的学习,读者可以非常轻松地掌握Eclipse插件开发的技能,从而开发出满足个性化需求的插件。\r\n 本书以一个简单而实用的枚举生成器作为入门案例,通过该案例读者能学习到扩展点、SWT、JET等EcliPse插件开发的基本技能;接着对Eclipse插件开发中的基础知识进行了介绍,并且对属性视图的使用做了重点介绍;最后以两个具有一定复杂程度的插件(Hibemate建模工具和界面设计器)为案例介绍了SwT、Draw2D、GEF、JET等技术的综合运用。\r\n 本书不仅适合于Eclipse插件开发初学者学习,对于有一定相关开发经验的开发人员也具有很高的参考价值。
第1章 EcIipse插件\r\n 1.1 插件的安装\r\n 1.1.1 直接复制安装\r\n 1.1.2 links安装方式\r\n 1.1.3 EclilDse在线安装方式\r\n 1.2 内置儿Jnit插件的使用\r\n 1.3 可视化GUI设计插件——Visual EditOr\r\n 1.3.1 visual Editor的安装\r\n 1.3.2 一个登录界面的开发\r\n 1.4 Eclipse的反编译插件\r\n 1.4.1 为什么要反编译\r\n 1.4.2 常用Java反编译器\r\n 1.4.3 反编译不完伞的代码的查看\r\n 1.5 wTP插件使用\r\n第2章 Eclipse插件开发\r\n 2.1 Eclipse插件开发介绍\r\n 2.1.1 开发插件的步骤\r\n 2.1.2 Eclipse插件开发学习资源的取得\r\n 2.2 简单的案例插件功能描述\r\n 2.3 插件项目的建立\r\n 2.3.1 建立项目\r\n 2.3.2 以调试方式运行插件项目\r\n 2.4 改造EnumGeneratorNewWizardPage类\r\n 2.4.1 修改构造函数\r\n 2.4.2 修改createControl方法\r\n 2.4.3 修改initialize方法\r\n 2.4.4 修改handleBrowse方法\r\n 2.4.5 修改dialogChmnged方法\r\n 2.4.6 分析updateStatus方法\r\n 2.4.7 取得界面控件值的方法\r\n 2.5 开发枚举项编辑向导页\r\n 2.5.1 初始化\r\n 2.5.2 相关环境数据的处理\r\n 2.5.3 代码生成\r\n 2.6 编写代码生成器\r\n 2.7 功能演示、打包安装\r\n第3章 插件开发导航\r\n 3.1 程序界面的基础——SwT/JFace\r\n 3.1.1 SWT的类库结构\r\n 3.1.2 SWT中的资源管理\r\n 3.1.3 在非用户线程巾访问用户线程的Gul资源\r\n 3.1.4 访问对话框中的值\r\n 3.1.5 如何知道部件支持哪些style\r\n 3.2 SWT疑难点\r\n 3.2.1 BuRon部件\r\n 3.2.2 Text部件\r\n 3.2.3 Tray\r\n 3.2.4 Table\r\n 3.2.5 在SWT中显示AwT/Swing对象\r\n 3.3 异步作业调度\r\n 3.4 对话框\r\n 3.4.1 信息提示框\r\n 3.4.2 值输入对话框\r\n 3.4.3 错误对话框\r\n 3.4.4 颜色选择对话框\r\n ……\r\n第4章 属性视图\r\n第5章 开发Hibernate插件 \r\n第6章 基于GEF的界面设计工具
自己动手写开发工具是很多开发人员的梦想,虽然市场上已经有了各种开发工具,但是在一些情况下还是有编写自己开发工具的需求的:
使用的编程语言没有合适的开发工具。比如在Eclipse出现之前,Python、Ruby、JavaScript等语言都没有很好的全面支持代码编写、调试以及重构的开发工具,使用这些语言进行开发非常麻烦。
为自己开发的语言配备开发工具。有时我们会开发一款新的开发语言,为了方便使用,也需要为其提供相应的开发工具。
为控件库、框架等提供开发工具。Echo2、Tapestry、Spring等都是非常优秀的产品,但是通过手工编码的方式使用这些产品仍然是非常麻烦的,如果能配备图形化的开发工具,那么通过简单地用鼠标拖曳就可以快速完成工作。
为产品提供二次开发工具。很多公司都有自己的产品,而这些产品一般都提供了二次开发的能力,开发人员只要进行少量的编码或者配置就可以很轻松地实现针对特定客户的个性化功能。由于二次开发人员的技术水平相对较差,如果能提供一个图形化的二次开发工具必将提高二次开发的效率及质量。
针对上面的这几种情况,已经有很多开发人员探索着实现了自己的开发工具,比如Boa Constructor就是一款用Python语言编写的Python开发工具,润乾报表提供了用Swing技术实现的报表设计器。这种将所有功能全盘地由自己实现的方式有如下缺点。
第一,必须自己处理所有的细节问题。比如实现一个语言的开发工具就必须自己处理语法高亮、语法分析、代码提示、调试、重构、可视化的界面编辑器以及代码生成等,这些问题的处理对开发人员的要求非常高,而且开发工作量也非常大。
第二,各个工具的差异性非常大,增加了用户的学习成本。
第三,不同的工具之间的集成非常困难。由于不同的工具是由各个厂商独立开发出来的,互相之间的集成非常麻烦,不仅使用的时候需要运行多个工具,而且经常需要在多个实现相似功能的工具之间做出取舍。
Delphi、Visual Studio .NET、JBuilder、NetBeans等都提供了一定的扩展机制,我们只要按照要求编写插件就能在这些工具中开发扩展功能,但是这些工具提供的扩展功能是非常简单和有限的,我们几乎无法完成编写开发工具这样复杂的功能。
作为IDE界的一匹黑马,Eclipse近些年来异军突起,很多开源项目或者商业化的产品都提供了相应的Eclipse插件,比如Echo2、GWT、Struts等开源产品以及IBM Websphere、Crystal、金蝶、普元等商业公司的开发工具都基于Eclipse进行开发,甚至Borland也将新版本的JBuilder移植到Eclipse上。Eclipse能够得到这么多厂商的支持,究其原因有如下几点:免费且开源;开放性;可扩展性强;对开发工具的开发提供了强大的支持;基于Eclipse的产品更专业;各种插件可以组合使用。
1. 免费且开源
大多数开发工具都是按用户数收费的,对于开发人员比较多的公司来说开发工具的支出是一笔不小的费用,而且基于这些开发工具开发出来的扩展插件在发布的时候也会涉及到授权的问题。Eclipse是免费使用的,这样就为公司节省了不小的一笔开支,而且只要遵守EPL协议,那么基于Eclipse开发的扩展插件可以任意发布。Eclipse是开源的,通过研读Eclipse的代码,我们能更快地开发出高质量的插件。
2. 开放性
Eclipse并没有局限于Java语言,我们可以开发非Java语言的开发插件,比如Ruby、Python、C/C++、C#以及PHP等语言都有了Eclipse上的开发插件。而且Eclipse也没有限定插件的应用领域,所以Eclipse成为了很多领域开发工具的基础,不仅IBM、金蝶、普元等企业级系统开发商选择Eclipse作为其开发工具的基础,而且像风河系统公司、Accelerated科技、Altera、TI和Xilinx等嵌入式系统公司也将Eclipse平台作为自身开发工具的基础。
3. 可扩展性强
Eclipse采用微内核架构,其核心只有几兆大小,大家平时使用的代码编辑、调试、查找以及重构等功能都是以插件的形式提供的。我们不仅可以扩展现有插件,而且还可以提供扩展点,这样其他用户同样可以基于我们的插件开发扩展插件,从而满足用户的个性化需求。所以通常我们只需要实现个性化的功能即可,而通用的功能由基础插件来完成。比如作者曾经开发过一个Python的远程调试插件,由于PyDev已经提供了本地调试的功能,所以作者对PyDev进行了少量扩展开发就完成了这个插件。
4. 对开发工具的开发提供了强大的支持
Eclipse提供了新建向导、代码编辑、调试、运行、图形
杨中科,毕业于山东大学物流工程专业,曾任职于国内某ERP公司,现专注于开源泉技术的研究与推广,是CowNew开源团队的发起人之一。
Eclipse是一款优秀的、高度可扩展的平台,如果我们只是使用Eclipse的现有功能的话是无法发挥Eclipse的潜力的,如果能根据需要开发基于Eclipse的插件,那么将会大大提高开发效率。现在市场上已经有了一些Eclipse相关的书籍,但是大部分都是偏重于Eclipse的使用,很少有涉及到基于Eclipse的插件开发的书籍,即使有讲解Eclipse插件开发的,其内容也是浅尝辄止,没有对有一定复杂程度和实用性的插件的开发过程进行详细讲解。
Eclipse的插件体系是非常复杂的,学习门槛也非常高,为了帮助开发人员掌握Eclipse的插件开发技术,从而开发出满足自己要求的插件,本书将系统地介绍Eclipse插件各方面的知识,并且通过实际的开发案例来演示这些知识的实战性应用。
书中对应的Eclipse版本为Eclipse 3.2,可以从http://www.eclipse.org网站免费下载。
本书各章内容安排如下。
第1章介绍常用的Eclipse插件的安装和使用。
第2章以一个枚举生成器插件的开发为案例讲解一个简单、实用的插件的开发。
第3章介绍Eclipse插件开发中常用的基础知识。
第4章介绍插件对属性视图的支持。
第5章以Hibernate建模插件为案例讲解有一定复杂程度和实用性的插件的开发。
第6章以界面设计器插件为案例讲解基于GEF技术的图形插件的开发。
本书以案例贯穿始终:枚举生成器案例将我们带入Eclipse插件开发的大门,通过它读者可以学习到SWT、JET、扩展点、插件的部署等Eclipse插件开发最基础的知识,从而具备了开发简单插件的能力;Hibernate建模插件使得我们能够将编辑器、向导、JET、属性视图等技术有机地结合起来,开发出有一定复杂程度和实用性的插件;界面设计器插件不仅巩固了前面所学的知识,而且以通俗易懂的语言讲解了Eclipse插件开发中最难的知识点——GEF,通过学习此案例,读者将具备使用GEF开发UML编辑器、报表设计器等图形化编辑器的能力。
本书的随书光盘包含书中所有案例的源代码,光盘中还包含一个讲解Eclipse插件开发入门知识的视频教程,手把手地引导读者进入Eclipse插件开发的大门。
在此,我要感谢CowNew开源团队的朋友们一直以来的支持,还要感谢清华大学出版社,特别要感谢彭欣和宋延清两位编辑,他们给我的帮助使得我们的合作非常愉快,也使得本书能够顺利地完成和出版。
如果您对本书有任何意见和建议,您可以给我发送邮件:about521@163.com,本书相关的后续资料将会发布到CowNew开源团队网站(http://www.cownew.com)中。
杨中科
无封面