具体描述
内容介绍:
本书系统地介绍了SWT、Draw2D、GEF、JET等与Eclipse插件开发相关的基础知识,并且以实际的开发案例来演示
这些知识的实战性应用,通过对这些实际开发案例的学习,读者可以非常轻松地掌握Eclipse插件开发的技能,从而开发出满
足个性化需求的插件。
本书以一个简单而实用的枚举生成器作为入门案例,通过该案例读者能学习到扩展点、SWT、JET等Eclipse插件开发的
基本技能;接着对Eclipse插件开发中的基础知识进行了介绍,并且对属性视图的使用做了重点介绍;最后以两个具有一定复
杂程度的插件(Hibernate建模工具和界面设计器)为案例介绍了SWT、Draw2D、GEF、JET等技术的综合运用。
作者简介
目录信息
1.1 插件的安装... 1
1.1.1 直接复制安装... 1
1.1.2 links安装方式... 2
1.1.3 Eclipse在线安装方式... 3
1.2 内置JUnit 插件的使用... 5
1.3 可视化GUI设计插件
——Visual Editor 9
1.3.1 Visual Editor的安装... 9
1.3.2 一个登录界面的开发... 10
1.4 Eclipse的反编译插件... 21
1.4.1 为什么要反编译... 21
1.4.2 常用Java反编译器... 22
1.4.3 反编译不完全的代码的
查看... 23
1.5 WTP插件使用... 26
第2章 Eclipse插件开发.... 30
2.1 Eclipse插件开发介绍... 30
2.1.1 开发插件的步骤... 30
2.1.2 Eclipse插件开发学习资源的
取得... 31
2.2 简单的案例插件功能描述... 31
2.3 插件项目的建立... 33
2.3.1 建立项目... 33
2.3.2 以调试方式运行插件项目... 38
2.4 改造EnumGeneratorNewWizardPage
类... 39
2.4.1 修改构造函数... 39
2.4.2 修改createControl方法... 40
2.4.3 修改initialize方法... 41
2.4.4 修改handleBrowse方法... 46
2.4.5 修改dialogChanged方法... 49
2.4.6 分析updateStatus方法... 50
2.4.7 取得界面控件值的方法... 51
2.5 开发枚举项编辑向导页... 51
2.5.1 初始化... 53
2.5.2 相关环境数据的处理... 54
2.5.3 代码生成... 54
2.6 编写代码生成器... 57
2.7 功能演示、打包安装... 64
第3章 插件开发导航.... 68
3.1 程序界面的基础——SWT/JFace. 68
3.1.1 SWT的类库结构... 68
3.1.2 SWT中的资源管理... 70
3.1.3 在非用户线程中访问
用户线程的GUI资源... 70
3.1.4 访问对话框中的值... 72
3.1.5 如何知道部件支持
哪些style. 73
3.2 SWT疑难点... 74
3.2.1 Button部件... 74
3.2.2 Text部件... 74
3.2.3 Tray. 74
3.2.4 Table. 74
3.2.5 在SWT中显示AWT/Swing
对象... 75
3.3 异步作业调度... 76
3.4 对话框... 79
3.4.1 信息提示框... 79
3.4.2 值输入对话框... 80
3.4.3 错误对话框... 81
3.4.4 颜色选择对话框... 82
3.4.5 字体对话框... 83
3.4.6 目录选择对话框... 83
3.4.7 文件选择对话框... 84
3.4.8 自定义对话框及配置保存与
加载... 85
3.5 首选项... 86
3.6 Eclipse资源API和文件系统... 88
3.6.1 资源相关接口的常见方法... 89
3.6.2 方法中force参数的意义... 91
3.6.3 资源相关接口的方法使用
示例... 91
3.6.4 在Eclipse中没有当前项目... 92
3.7 Java项目模型... 92
3.7.1 类结构... 92
3.7.2 常用工具类... 94
3.7.3 常用技巧... 95
3.7.4 设定构建路径实战... 100
3.7.5 如何研读JDT代码... 105
3.8 插件开发常见的问题... 106
3.8.1 InvocationTargetException
异常的处理... 106
3.8.2 Adaptable 与Extension
Object/Interface模式... 107
3.8.3 千万不要使用internal包... 111
3.8.4 打开视图... 111
3.8.5 查找扩展点的实现插件... 111
3.8.6 项目nature. 111
3.8.7 透视图开发... 112
3.8.8 关于工具条路径... 113
3.8.9 Eclipse的日志... 116
第4章 属性视图.... 117
4.1 基本使用... 117
4.1.1 IPropertySource接口说明... 118
4.1.2 对象实现IPropertySource
接口... 120
4.1.3 对象适配成IPropertySource
对象... 125
4.2 属性视图高级话题... 128
4.2.1 属性分类... 128
4.2.2 复合属性... 133
4.2.3 常用属性编辑器... 140
4.2.4 自定义属性描述器... 146
第5章 开发Hibernate插件.... 154
5.1 功能描述... 154
5.2 XML文件的处理... 158
5.2.1 XML处理技术比较... 158
5.2.2 Dom4j的使用... 159
5.2.3 XStream的使用... 165
5.3 实体模型文件创建向导... 169
5.4 模型的定义和模型文件处理... 176
5.5 实体属性描述器... 187
5.6 实体编辑器... 193
5.6.1 字段的编辑... 193
5.6.2 编辑器基类... 200
5.6.3 实体编辑器核心配置界面... 203
5.6.4 多页实体编辑器... 224
5.7 代码生成... 228
5.7.1 代码生成器接口... 228
5.7.2 代码生成器配置文件... 232
5.7.3 代码生成向导... 235
5.7.4 公共工具类CommonUtils. 243
5.8 Hibernate代码生成器... 245
5.8.1 命名策略... 246
5.8.2 工具类... 247
5.8.3 代码生成的JET代码... 251
5.9 CowNewStudio 使用实例... 259
第6章 基于GEF的界面设计工具.... 263
6.1 GEF简介... 263
6.1.1 Draw2D.. 263
6.1.2 请求与编辑策略... 264
6.1.3 视图与编辑器... 264
6.1.4 GEF的工作过程... 265
6.2 系统需求... 265
6.2.1 界面设计工具的分类... 265
6.2.2 功能描述... 266
6.3 构建模型... 267
6.4 实现控制器... 275
6.4.1 窗体和组件的控制器... 275
6.4.2 编辑策略... 279
6.4.3 命令对象... 283
6.5 窗体文件创建向导... 287
6.6 组件加载器... 289
6.7 编辑器... 295
6.8 代码生成和构建器... 310
6.8.1 代码生成... 310
6.8.2 构建器... 313
6.8.3 为项目增加构建器... 320
6.9 实现常用组件... 323
6.9.1 标签组件... 323
6.9.2 按钮组件... 327
6.9.3 复选框... 331
6.9.4 编辑框... 336
6.9.5 列表框... 338
6.10 使用演示... 346
· · · · · · (收起)
读后感
用户评价
说实话,这本书的实战价值超乎我的预期。我原本以为这种主题的书籍会更偏向学术化,充斥着晦涩的数学证明,但作者巧妙地将复杂的算法包装在了清晰的、可操作的步骤中。最让我印象深刻的是它讲解如何设计一个高效的符号表管理系统,涉及到命名空间隔离、作用域查找的性能优化等细节,这些都是在日常开发中容易被忽略,但却是构建复杂工具时决定成败的关键要素。书中对插件化架构的探讨也十分精彩,展示了如何设计一个可扩展的工具接口,使得后续的功能扩展可以模块化进行,这对于任何长期维护的项目都是至关重要的。这本书与其说是一本教程,不如说是一本工具设计领域的“内功心法”。
这本书的封面设计,说实话,第一眼看上去就给我一种非常硬核的感觉,那种经典的、带着点复古技术范儿的排版,让我这个自诩为“代码老兵”的人一下子来了精神。我期待它能深入讲解工具链的构建过程,比如编译器前端的词法分析和语法分析是如何一步步将人类可读的源代码转化为机器可执行指令的。我尤其希望书中能详细剖析抽象语法树(AST)的构建、遍历与优化策略,这部分是任何自制语言或工具的基石。如果能结合一些现代编程语言的特性,比如如何处理闭包、异步操作等复杂语义,并展示如何设计出健壮的错误报告机制,那就更完美了。我希望看到的不仅仅是理论的堆砌,而是大量的、可立即上手的代码示例,最好能展示从零开始实现一个简单的解释器或者一个自定义的构建系统,让我们能真正体会到“动手”的乐趣和挑战。
读完后感觉,这本书的叙事节奏把握得相当到位,它没有急于求成地抛出复杂概念,而是像一位耐心的导师,带着读者从最基础的原理开始搭建知识体系。特别是关于中间表示(IR)的设计部分,我发现作者在这方面投入了极大的篇幅,清晰地阐述了为什么需要IR,以及如何从不同的源语言特性映射到统一的IR结构上,这一点对于想要设计自己类型系统的开发者来说是无价之宝。书中对于性能优化的讨论也很有深度,比如寄存器分配的算法选择,以及如何利用数据流分析进行死代码消除。如果能再多一些不同架构(比如x86与ARM)对代码生成的影响对比,那就更显专业性和广博性了。总的来说,它提供了一个扎实的蓝图,让你明白自己正在构建的“工具”的每一个齿轮是如何咬合运转的。
我最欣赏这本书的地方,在于它对于“为什么”的深入挖掘,而不仅仅是“怎么做”。例如,在讲解错误恢复策略时,作者并没有直接给出最好的那个算法,而是对比了多种策略的优缺点、时间复杂度和对用户体验的影响,让读者自己去权衡和选择。这种引导式教学,培养了读者独立思考和设计的能力,而不是简单地复制粘贴代码。此外,书中对于版本控制集成和自动化测试框架在工具开发中的作用也有独到的见解,这体现了作者紧跟现代软件工程实践的思维。这本书绝对是为那些不满足于仅仅使用工具,而渴望理解、改造乃至创造工具的工程师准备的。它是一次智力上的挑战,也是一次技术视野的彻底刷新。
这本书的价值在于它提供了一种全新的视角来看待我们习以为常的开发环境。当你习惯了使用成熟的IDE和构建工具后,很容易忘记这些强大工具背后的复杂性。作者通过引导我们亲手去实现解析器、链接器甚至调试器(虽然只是概念层面)的关键组件,极大地拓宽了我的技术视野。我对其中关于调试信息格式(如DWARF标准简介)的介绍非常感兴趣,这部分内容往往被主流书籍略过,但却是理解程序运行时状态的关键。书中对于处理跨平台兼容性的挑战也有涉及,比如如何编写与操作系统API交互的低层代码,这些实用的知识点,让这本书的理论高度和实践落地性得到了完美的平衡。