Eclipse插件开发

Eclipse插件开发 pdf epub mobi txt 电子书 下载 2026

出版者:机械工业出版社
作者:Eric Clayberg
出品人:
页数:551
译者:陈沛
出版时间:2010年7月
价格:85.00元
装帧:平装
isbn号码:9787111303367
丛书系列:开发人员专业技术丛书
图书标签:
  • eclipse
  • plugin
  • IDE
  • java
  • RCP
  • 软件开发
  • 软件工程
  • 计算机
  • Eclipse
  • 插件开发
  • Java
  • 开发
  • 软件工程
  • IDE
  • 程序员
  • 开发工具
  • 面向对象
  • 编程
想要找书就要到 本本书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

《ECLIPSE插件开发(原书第3版)》是一本由两位长期从事Java商业软件开发的技术专家编写的关于开发Eclipse商业插件的指南。本书主要介绍了开发Eclipse商业插件的完整过程,并从标准窗口小部件工具集、命令与操作、视图、透视图、实现帮助、国际化等方面对创建Eclipse商业插件进行了详细描述。本书既包含了开发Eclipse插件的基础理论,也涵盖了大量关于Eclipse插件开发的细节。

本书不仅适用于Eclipse插件开发的初学者,对于Eclipse商业软件开发人员也有很高的参考价值。

深入理解 Java 并发编程:从底层原理到高性能实践 图书简介 本书旨在为希望精通 Java 并发编程的开发者提供一套全面、深入且实用的学习路线图。我们深知,在当今多核处理器日益普及的时代,编写高效、稳定且正确的并发代码是构建高性能系统的基石。本书摒弃了对表面概念的简单罗列,而是聚焦于 Java 并发机制的底层实现原理、核心 API 的设计哲学以及在真实生产环境中解决复杂并发问题的实战技巧。 第一部分:并发编程的基石与挑战 本部分将为读者打下坚实的理论基础,剖析并发编程之所以复杂的核心原因,并介绍理解后续内容的必要前置知识。 硬件与操作系统的视角: 我们将从硬件层面深入探讨 CPU 缓存一致性协议(如 MESI 协议)、内存屏障(Memory Barriers)的工作原理。理解这些底层机制是理解 Java `volatile` 关键字和同步机制效率的根本。随后,我们将回顾操作系统中线程与进程的概念,以及上下文切换的开销,帮助读者认识到线程调度的成本。 Java 内存模型(JMM)的精髓: JMM 不仅仅是规范,更是指导我们编写无锁和同步代码的蓝图。本书将详细解读 JMM 定义的可见性、有序性与原子性,并结合 OpenJDK 源码(如 `AbstractQueuedSynchronizer` 的内部实现)来阐释 JVM 如何将 JMM 映射到实际的硬件指令集上。 传统同步机制的深度剖析: 我们将不再停留在 `synchronized` 关键字的表面使用上,而是深入研究其在 JVM 层面是如何通过 Monitor 结构(基于对象头中的 Mark Word)实现锁的获取、释放、阻塞与唤醒。这包括对偏向锁、轻量级锁和重量级锁的升级路径进行详尽的源码级分析,揭示锁竞争下的性能瓶颈与优化点。 第二部分:并发工具集的底层实现与应用 Java 5 引入的 `java.util.concurrent` 包是并发编程的利器。本部分将带您穿透这些工具类的“黑箱”,直达其高性能实现的内核。 AQS 框架的魔力: 抽象队列同步器(AQS)是 JUC 包中几乎所有重要同步工具(如 `ReentrantLock`, `Semaphore`, `CountDownLatch`)的基石。我们将花费大量篇幅来解析 AQS 的双向链接队列结构、状态(State)变量的管理,以及 `acquire()` 和 `release()` 方法中自旋与等待/通知机制的精妙配合,帮助读者掌握如何基于 AQS 自定义同步器。 并发集合的性能优化策略: 为什么 `ConcurrentHashMap` 比 `Hashtable` 性能更高?本书将对比不同版本 `ConcurrentHashMap`(1.7 vs 1.8)的并发控制策略。重点解析 1.8 版本中基于 CAS 和 `Node` 链表/红黑树的结构,以及分段锁(或称为“锁的粒度划分”)的原理。此外,还会探讨 `CopyOnWriteArrayList` 和 `LinkedBlockingQueue` 等集合在高并发场景下的适用性与性能权衡。 原子操作与无锁编程: 我们将深入探讨 `java.util.concurrent.atomic` 包中类(如 `AtomicInteger`)如何利用 CAS (Compare-and-Swap) 操作实现无锁更新。本书将详细解释 CAS 操作的三个要素(内存地址、预期值、新值)以及它如何避免了操作系统层面的上下文切换,从而在特定场景下实现比锁更优的性能。 第三部分:线程池的精细化管理与调优 线程池是管理应用生命周期线程、控制资源消耗的核心组件。本部分关注如何正确配置和管理线程池,以应对复杂的业务负载。 `ThreadPoolExecutor` 的工作流: 详细解析 `ThreadPoolExecutor` 的七大核心参数(核心线程数、最大线程数、队列容量、拒绝策略等)的意义及其相互作用。我们将通过流程图和伪代码来清晰展示线程的创建、任务的提交、队列的排队以及任务被拒绝的全过程。 合理的队列选择: 深入比较 `LinkedBlockingQueue`、`ArrayBlockingQueue` 和 `SynchronousQueue` 在不同吞吐量和延迟要求的应用场景下的优劣。讲解 `SynchronousQueue` 作为“零容量队列”在实现直接交接(Hand-off)模式中的关键作用。 动态线程池与响应式编程的融合: 介绍如何根据系统的实际负载(如 CPU 利用率和任务执行时间)动态调整线程池大小的最佳实践,并简要探讨如 Reactive Streams 规范下,如何在异步驱动模型中高效利用线程资源。 第四部分:高阶并发编程模式与实战调试 本部分将聚焦于复杂场景下的高级并发模式,并提供实用的故障排查和性能分析方法。 并发设计模式的应用: 探讨诸如生产者-消费者模式(基于 BlockingQueue 的实现)、读写锁模式(`ReentrantReadWriteLock` 的应用)、以及在分布式事务中如何利用 TCC(Try-Confirm-Cancel)思想来模拟补偿机制等高级模式。 并行流(Parallel Stream)的陷阱: 分析 `Stream.parallel()` 内部是如何利用 Fork/Join 框架进行任务拆分的,并指出在 I/O 密集型任务中使用并行流可能导致性能急剧下降的原因,强调“何时使用并行流”比“如何使用”更重要。 故障诊断与性能分析: 教授如何利用 JVM 自带的诊断工具(如 `jstack` 生成的线程快照、JConsole/VisualVM 的线程视图)来识别死锁、活锁、饥饿等常见并发问题。重点解析线程转储文件中的关键状态信息(BLOCKED, WAITING, TIMED_WAITING)及其锁定对象信息,使读者具备独立分析和解决并发问题的能力。 本书特色 本书不仅仅是 API 的使用手册,更是一本深入 JVM 内部、探究操作系统交互的并发原理宝典。通过大量的代码示例、流程图解析和性能对比实验,读者将能够彻底掌握 Java 并发编程的“道”与“术”,从而自信地构建出既健壮又具备卓越性能的现代应用程序。

作者简介

Eric Clayberg是Instantiations公司产品开发部高级副总裁。Eric是一位具有丰富经验的软件技术专家、产品开发人员、企业家和具有超过17年商业软件开发经验的项目经理。这17年开发经验包含了12年的Java开发经验和9年的Eclipse开发经验。他是十几个商业Java和Smalltalk附加产品的主要作者和架构者,其中包括了广为流行的WindowBuilder Pro、CodePro和获奖的VA Assist产品系列。他拥有麻省理工学院的理学学士学位、哈佛大学的MBA学位。是两家成功的软件公司ObjectShare和Instantiations的共同创始人之一。

Dan Rubel是Instantiations公司的首席技术执行官。他是一名成功的商人,也是面向对象技术方面的设计与应用的专家。他具有15年以上的商业软件开发经验,其中包括了13年的Java开发经验和9年的Eclipse开发经验。他是几个成功的商业产品的架构师和项目经理。这些商业产品包括RCP Developer、WindowTester、jFactor和jKit。他在其他几个商业产品中扮演关键设计与领导角色。这些商业产品包括VA Assist和CodePro。他拥有Bucknell的理学学士学位,是Instantiations公司的共同创始人之一。

Instantiations是IBM高级商业伙伴,为Eclipse和IBM的VisualAge、WebSphere和Rational产品系列开发了许多的商业附加软件。Instantiations公司是Eclipse基金会成员,是Eclipse开源组织的主要贡献者之一,负责Eclipse Collaboration Tools项目(即Koi项目)和Eclipse Pollinate项目(即Beehive项目)。

目录信息

读者赞誉
译者序
序言一
序言二
前 言
第1章 使用Eclipse工具 1
1.1 起步 1
1.1.1 获取Eclipse 1
1.1.2 安装 2
1.2 Eclipse工作台 2
1.2.1 透视图、视图和编辑器 4
1.2.2 操作 7
1.3 设置Eclipse 9
1.3.1 工作台首选项 9
1.3.2 Java首选项 10
1.3.3 导入与导出首选项 11
1.4 创建项目 11
1.4.1 使用新建Java项目向导 12
1.4.2 .classpath和.project文件 13
1.4.3 使用Java包向导 14
1.4.4 使用Java类向导 14
1.5 导航 15
1.5.1 打开类型对话框 15
1.5.2 类型层次结构视图 16
1.5.3 转至行 16
1.5.4 大纲视图 16
1.5.5 快速访问 17
1.6 搜索 17
1.6.1 文件搜索 17
1.6.2 Java搜索 18
1.6.3 其他搜索菜单选项 19
1.6.4 工作集 19
1.7 编写代码 20
1.7.1 Java编辑器 20
1.7.2 模板 24
1.7.3 重构 25
1.7.4 本地历史记录 26
1.7.5 文件扩展名关联 28
1.8 使用CVS进行团队开发 29
1.8.1 开始使用CVS 30
1.8.2 从CVS中导出项目 30
1.8.3 与库同步 31
1.8.4 比较与替代资源 31
1.8.5 CVS标签装饰器 32
1.9 运行程序 33
1.9.1 启动Java程序 33
1.9.2 启动配置 34
1.10 调试简介 35
1.10.1 设置断点 35
1.10.2 使用调试视图 36
1.10.3 使用变量视图 36
1.10.4 使用表达式视图 36
1.11 测试简介 37
1.11.1 创建测试用例 37
1.11.2 运行测试用例 37
1.12 Mylyn简介 38
1.13 总结 41
参考文献 41
第2章 简单插件示例 42
2.1 收藏夹插件 42
2.2 创建插件项目 42
2.2.1 新建插件项目向导 42
2.2.2 定义插件 42
2.2.3 定义视图 43
2.3 评审生成代码 44
2.3.1 插件清单 44
2.3.2 启动器或插件类 48
2.3.3 收藏夹视图 50
2.4 构建产品 52
2.4.1 手动构建 52
2.4.2 使用Apache Ant构建 53
2.5 安装并运行产品 56
2.6 调试产品 56
2.6.1 创建配置文件 56
2.6.2 选择插件和片段 57
2.6.3 启动运行时工作台 58
2.7 PDE视图 58
2.7.1 插件注册表视图 58
2.7.2 插件视图 58
2.7.3 插件依赖项视图 59
2.7.4 插件手动搜索 59
2.7.5 插件探测器 59
2.8 编写插件测试 60
2.8.1 测试准备 60
2.8.2 创建插件测试项目 60
2.8.3 创建插件测试 60
2.8.4 运行插件测试 63
2.8.5 卸载收藏夹插件 64
2.9 本书示例 64
2.10 总结 65
参考文献 65
第3章 Eclipse基础结构 66
3.1 结构概述 66
3.1.1 插件结构 67
3.1.2 工作区 67
3.2 插件目录与JAR文件 68
3.2.1 链接文件 68
3.2.2 混合途径 69
3.3 插件清单 69
3.3.1 插件声明 70
3.3.2 插件运行时 71
3.3.3 插件依赖项 71
3.3.4 扩展项与扩展点 73
3.4 启动器或插件类 74
3.4.1 启动与关闭 74
3.4.2 插件早期启动 74
3.4.3 静态插件资源 74
3.4.4 插件首选项 75
3.4.5 插件配置文件 75
3.4.6 插件与AbstractUIPlugin 77
3.5 插件模型 77
3.5.1 平台 78
3.5.2 插件与包 78
3.5.3 插件扩展项注册表 79
3.6 日志 79
3.6.1 状态对象 80
3.6.2 错误日志视图 80
3.6.3 处理错误(与其他状态) 81
3.7 Eclipse插件 81
3.8 总结 82
参考文献 82
第4章 标准窗口小部件工具集 83
4.1 SWT历史与目标 83
4.2 SWT窗口小部件 85
4.2.1 简单独立示例 85
4.2.2 窗口小部件生命周期 87
4.2.3 窗口小部件事件 87
4.2.4 抽象窗口小部件类 88
4.2.5 最高级类 90
4.2.6 常用窗口小部件 92
4.2.7 菜单 108
4.2.8 其他窗口小部件 110
4.3 布局管理 110
4.3.1 填充布局(FillLayout) 110
4.3.2 行布局(RowLayout) 111
4.3.3 网格布局(GridLayout) 113
4.3.4 表单布局(FormLayout) 115
4.4 资源管理 117
4.4.1 颜色 117
4.4.2 字体 117
4.4.3 图像 117
4.5 GUI构建器(GUI Builder) 118
4.6 总结 119
参考文献 119
第5章 JFace查看器 121
5.1 面向列表的查看器 121
5.1.1 标签提供者 122
5.1.2 内容提供者 122
5.1.3 查看器排序器 123
5.1.4 查看器过滤器 123
5.1.5 StructuredViewer类 123
5.1.6 ListViewer类 125
5.1.7 TableViewer类 127
5.1.8 TreeViewer类 130
5.2 文本查看器 132
5.3 总结 134
参考文献 134
第6章 命令与操作 135
6.1 命令 135
6.2 菜单和工具栏添加项 138
6.2.1 定义最高级菜单 138
6.2.2 添加至已有最高级菜单 138
6.2.3 定义最高级工具栏项 139
6.2.4 限制最高级菜单与工具栏项的
可见性 139
6.2.5 定义基于选择的上下文菜单项 140
6.2.6 定义视图相关菜单或工具栏项 143
6.2.7 定义编辑器相关的菜单或工具栏
项目 143
6.2.8 动态菜单添加项 144
6.2.9 locationURI 144
6.2.10 visibleWhen表达式 145
6.3 处理器 148
6.4 键绑定 150
6.5 IAction与IActionDelegate 151
6.6 工作台窗口操作 152
6.6.1 定义工作台窗口菜单 153
6.6.2 菜单中的组 154
6.6.3 定义菜单项和工具栏按钮 154
6.6.4 操作的图像 155
6.6.5 插入点 155
6.6.6 创建操作代表 156
6.6.7 手动测试新建操作 157
6.6.8 为新操作添加测试 158
6.6.9 讨论 160
6.7 对象操作 160
6.7.1 定义基于对象的操作 161
6.7.2 操作过滤与可用 163
6.7.3 IObjectActionDelegate 167
6.7.4 创建基于对象的子菜单 167
6.7.5 手动测试新操作 168
6.7.6 为新操作添加测试 168
6.8 视图操作 169
6.8.1 定义视图上下文子菜单 169
6.8.2 定义视图上下文菜单操作 170
6.8.3 IViewActionDelegate 171
6.8.4 定义视图工具栏操作 171
6.8.5 定义视图下拉子菜单和操作 172
6.8.6 手动测试新操作 172
6.8.7 为新操作添加测试 172
6.8.8 视图上下文菜单标识符 172
6.9 编辑器操作 174
6.9.1 定义编辑器上下文菜单 174
6.9.2 定义编辑器上下文操作 175
6.9.3 IEditorActionDelegate 175
6.9.4 定义编辑器最高级菜单 176
6.9.5 定义编辑器最高级操作 176
6.9.6 定义编辑器工具栏操作 177
6.9.7 为新操作添加测试 177
6.9.8 编辑器上下文菜单标识符 177
6.10 操作和键绑定 178
6.10.1 将命令与操作相关联 178
6.10.2 键盘可访问性 179
6.11 RFRS相关事项 180
6.12 总结 180
参考文献 180
第7章 视图 181
7.1 视图声明 182
7.1.1 声明视图类别 182
7.1.2 声明视图 183
7.2 视图部件 184
7.2.1 视图方法 184
7.2.2 视图控件 184
7.2.3 视图模型 185
7.2.4 内容提供者 194
7.2.5 标签提供者 195
7.2.6 查看器排序器 196
7.2.7 查看器过滤器 198
7.2.8 视图选择 199
7.2.9 实现propertyTester 199
7.3 视图命令 199
7.3.1 模型命令处理器 200
7.3.2 上下文菜单 200
7.3.3 工具栏按钮 203
7.3.4 下拉菜单 204
7.3.5 键盘命令 205
7.3.6 全局命令 205
7.3.7 剪贴板命令 206
7.3.8 拖放支持 210
7.3.9 内联编辑 215
7.4 链接视图 218
7.4.1 选择提供者 218
7.4.2 可适配对象 218
7.4.3 选择监听器 218
7.4.4 打开编辑器 219
7.5 保存视图状态 220
7.5.1 保存本地视图信息 220
7.5.2 保存全局视图信息 222
7.6 测试 225
7.7 图像缓存 225
7.8 自动调整大小的表列 226
7.9 RFRS相关事项 227
7.9.1 用于导航的视图(RFRS 3.5.15) 227
7.9.2 视图立即保存(RFRS 3.5.16) 227
7.9.3 视图初始化(RFRS 3.5.17) 227
7.9.4 视图全局操作(RFRS 3.5.18) 227
7.9.5 保存视图状态(RFRS 3.5.19) 228
7.9.6 注册上下文菜单(RFRS 5.3.5.8) 228
7.9.7 视图操作过滤程序
(RFRS 5.3.5.9) 228
7.10 总结 229
参考文献 229
第8章 编辑器 230
8.1 编辑器声明 231
8.2 编辑器组件 233
8.2.1 编辑器方法 233
8.2.2 编辑器控件 234
8.2.3 编辑器模型 236
8.2.4 内容提供者 242
8.2.5 标签提供者 243
8.3 编辑 244
8.3.1 单元格编辑器 244
8.3.2 变更监听器 246
8.3.3 单元格验证器 247
8.3.4 编辑与选择 249
8.4 编辑器生命周期 249
8.4.1 修改过的编辑器 249
8.4.2 切换页面 250
8.4.3 保存内容 251
8.5 编辑器命令 251
8.5.1 上下文菜单 251
8.5.2 编辑器添加程序 253
8.5.3 编辑器命令而不是编辑器添加
程序 257
8.5.4 撤销/重做 259
8.5.5 剪贴板操作 266
8.6 链接编辑器 266
8.7 RFRS相关事项 266
8.7.1 使用编辑器进行编辑或浏览
(RFRS 3.5.9) 266
8.7.2 编辑器生命周期(RFRS 3.5.10) 266
8.7.3 访问全局操作(RFRS 3.5.11) 267
8.7.4 当对象被删除时关闭
(RFRS 3.5.12) 267
8.7.5 同步外部更改(RFRS 3.5.14) 268
8.7.6 注册编辑器菜单
(RFRS 5.3.5.2) 268
8.7.7 编辑器操作过滤器
(RFRS 5.3.5.3) 268
8.7.8 未保存的编辑器更改
(RFRS 5.3.5.4) 268
8.7.9 为更改过的资源添加前缀
(RFRS 5.3.5.5) 268
8.7.10 编辑器大纲视图
(RFRS 5.3.5.6) 268
8.7.11 与大纲视图同步
(RFRS 5.3.5.7) 269
8.8 总结 269
参考文献 269
第9章 资源更改跟踪 270
9.1 IResourceChangeListener 270
9.1.1 IResourceChangeEvent 270
9.1.2 IResourceDelta 271
9.2 处理更改事件 272
9.3 批处理更改事件 274
9.4 进度监视器 276
9.4.1 IProgressMonitor 276
9.4.2 用于显示进度的类 276
9.4.3 工作台窗口状态栏 278
9.4.4 IProgressService 279
9.5 被延迟的更改事件 279
9.6 总结 280
参考文献 280
第10章 透视图 281
10.1 创建透视图 281
10.1.1 透视图扩展点 282
10.1.2 透视图工厂 282
10.1.3 IPageLayout 284
10.2 改进已有透视图 285
10.2.1 添加视图和占位符 285
10.2.2 添加快捷方式 287
10.2.3 添加操作集 288
10.3 RFRS相关事项 289
10.3.1 为长时间任务创建
(RFRS 5.3.5.10) 289
10.3.2 扩展已有透视图
(RFRS 5.3.5.11) 289
10.3.3 添加操作至窗口菜单
(RFRS 5.3.5.15) 289
10.4 总结 290
参考文献 290
第11章 对话框与向导 291
11.1 对话框 291
11.1.1 SWT对话框与JFace对话框 291
11.1.2 普通SWT对话框 291
11.1.3 普通JFace对话框 292
11.1.4 创建JFace对话框 293
11.1.5 对话框单元 295
11.1.6 对话框的初始位置和大小 295
11.1.7 可调整大小的对话框 295
11.1.8 收藏夹视图过滤器对话框 296
11.1.9 细节对话框 299
11.1.10 打开对话框—查找父shell 305
11.2 向导 306
11.2.1 IWizard 307
11.2.2 IWizardPage 308
11.2.3 IWizardContainer 309
11.2.4 嵌套的向导 310
11.2.5 启动向导 310
11.2.6 向导示例 312
11.2.7 对话框设置 314
11.2.8 基于选择的页面内容 314
11.2.9 基于前一页面的页面内容 318
11.3 RFRS相关事项 320
11.3.1 向导外观(RFRS 3.5.2) 320
11.3.2 在编辑器中打开新文件
(RFRS 3.5.6) 320
11.3.3 新项目切换透视图
(RFRS 3.5.7) 321
11.3.4 显示新对象(RFRS 3.5.8) 321
11.3.5 单一页面向导按钮
(RFRS 5.3.5.13) 321
11.4 总结 321
参考文献 321
第12章 首选项页 322
12.1 创建首选项页 322
12.2 首选项页API 323
12.2.1 FieldEditorPreferencePage 324
12.2.2 字段编辑器 324
12.2.3 PreferencePage 327
12.2.4 收藏夹首选项页 327
12.2.5 合法性验证 328
12.2.6 嵌套首选项页 329
12.2.7 选项卡式首选项页 330
12.3 首选项API 331
12.3.1 默认首选项 331
12.3.2 访问首选项 332
12.3.3 在程序中指定默认值 333
12.3.4 在文件中指定默认值 334
12.3.5 关联收藏夹视图 334
12.3.6 监听首选项更改 335
12.4 RFRS相关事项 335
12.5 总结 336
参考文献 336
第13章 属性 337
13.1 创建属性 337
13.1.1 FavoriteItem属性 337
13.1.2 资源属性 339
13.2 在属性对话框中显示属性 339
13.2.1 声明属性页 340
13.2.2 创建资源属性页 342
13.2.3 创建收藏夹项资源页 343
13.2.4 打开属性对话框 345
13.2.5 IColorProvider 345
13.3 在属性视图中显示属性 346
13.3.1 属性视图API 346
13.3.2 属性视图中的收藏夹属性 348
13.4 属性页作为首选项页重用 349
13.5 RFRS相关事项 350
13.6 总结 351
参考文献 351
第14章 构建器、标记和性质 352
14.1 构建器 353
14.1.1 声明构建器 353
14.1.2 IncrementalProjectBuilder 355
14.1.3 派生资源 360
14.1.4 关联构建器与项目 360
14.1.5 触发构建器 362
14.2 标记 363
14.2.1 标记类型 363
14.2.2 创建并删除标记 365
14.2.3 标记属性 366
14.2.4 标记解析—快速修复 368
14.2.5 查找标记 371
14.3 性质 372
14.3.1 声明性质 372
14.3.2 关联构建器与性质 373
14.3.3 IProjectNature 374
14.3.4 必需的性质 375
14.3.5 冲突的性质 375
14.3.6 性质图像 376
14.3.7 关联性质与项目 376
14.4 RFRS相关事项
14.4.1 使用构建器以转换资源
(RFRS 3.8.1) 380
14.4.2 不要替代已有构建器
(RFRS 3.8.3) 380
14.4.3 不要滥用术语“构建”
(RFRS 5.3.8.1) 380
14.4.4 标记已创建的资源为“派生的”
(RFRS 5.3.8.2) 381
14.4.5 响应清理构建请求
(RFRS 5.3.8.3) 381
14.4.6 在可能时使用IResourceProxy
(RFRS 5.3.8.4) 381
14.4.7 构建器必须由性质添加
(RFRS 5.3.8.5) 382
14.5 总结 382
参考文献 382
第15章 实现帮助 383
15.1 使用帮助 383
15.2 实现帮助 385
15.2.1 新建帮助项目 385
15.2.2 插件清单文件 387
15.2.3 内容表(toc)文件 388
15.2.4 创建HTML内容 390
15.3 上下文相关的帮助(F1) 391
15.3.1 关联上下文ID与项 392
15.3.2 IWorkbenchHelpSystem API 393
15.3.3 创建上下文相关的帮助内容 393
15.3.4 上下文扩展点 394
15.3.5 标记帮助 396
15.4 从程序中访问帮助 396
15.4.1 打开指定帮助页 396
15.4.2 打开网页 397
15.5 备忘单 398
15.5.1 使用备忘单 398
15.5.2 创建简单备忘单 398
15.5.3 注册备忘单 400
15.5.4 添加备忘单命令 402
15.5.5 添加命令参数 403
15.6 RFRS相关事项 404
15.6.1 通过帮助系统提供帮助
(RFRS 3.7.2) 404
15.6.2 通过帮助系统提供所有帮助
(RFRS 5.3.7.1) 404
15.6.3 使用F1激活上下文帮助
(RFRS 5.3.7.2) 405
15.6.4 实现活动帮助(RFRS 5.3.7.3) 405
15.6.5 独立帮助的使用
(RFRS 5.3.7.4) 405
15.6.6 附加文档的使用
(RFRS 5.3.7.5) 405
15.6.7 提供任务流的概述
(RFRS 5.3.5.34) 405
15.6.8 仅说明一个任务
(RFRS 5.3.5.35) 406
15.6.9 为每一个步骤提供帮助链接
(RFRS 5.3.5.36) 406
15.7 总结 406
参考文献 406
第16章 国际化 407
16.1 外部化插件清单 407
16.2 外部化插件字符串 409
16.3 使用片段 414
16.3.1 新建片段项目向导 414
16.3.2 片段清单文件 415
16.3.3 片段项目内容 417
16.4 手动测试 417
16.5 总结 417
参考文献 417
第17章 创建新扩展点 419
17.1 扩展点机制 419
17.2 定义扩展点 419
17.2.1 创建扩展点 420
17.2.2 创建扩展点模式 421
17.2.3 扩展点元素和属性 422
17.2.4 扩展点元素语法 425
17.3 扩展点的后台代码 426
17.3.1 分析扩展项信息 426
17.3.2 创建代理 427
17.3.3 创建可执行扩展项 429
17.3.4 清理 431
17.4 扩展点文档 431
17.5 使用扩展点 432
17.6 RFRS相关事项 434
17.6.1 文档扩展点(RFRS 3.10.5) 434
17.6.2 记录错误(RFRS 5.3.10.1) 434
17.7 总结 434
参考文献 434
第18章 功能部件、品牌化和更新 435
18.1 功能部件项目 436
18.1.1 创建新功能部件项目 436
18.1.2 功能部件清单文件 437
18.1.3 功能部件清单编辑器 438
18.1.4 测试功能部件 442
18.2 品牌化 442
18.2.1 about.html文件 443
18.2.2 about.ini文件 443
18.2.3 产品品牌化 445
18.3 更新站点 446
18.3.1 创建更新站点项目 447
18.3.2 site.xml文件 447
18.3.3 更新网站 450
18.3.4 回到功能部件清单 450
18.3.5 访问更新站点 451
18.4 RFRS相关事项 453
18.4.1 不要覆盖产品品牌
(RFRS 3.1.8) 453
18.4.2 具有品牌的功能部件可见性
(RFRS 5.3.1.9) 453
18.4.3 包含添加项信息
(RFRS 5.3.1.10) 453
18.4.4 about.html文件内容
(RFRS 5.3.1.11) 453
18.4.5 启动画面限制(RFRS 5.3.1.12) 454
18.5 总结 454
参考文献 454
第19章 构建产品 455
19.1 Ant的简要介绍 455
19.1.1 构建项目 455
19.1.2 构建目标 455
19.1.3 构建任务 456
19.1.4 构建属性 458
19.1.5 [antcall]任务 463
19.1.6 macrodef 465
19.1.7 Ant扩展项 466
19.2 使用PDE构建 467
19.2.1 PDE构建概述 467
19.2.2 PDE构建过程中的步骤 468
19.2.3 PDE构建过程中的目录 469
19.2.4 PDE脚本和模板 469
19.2.5 创建PDE构建 470
19.2.6 指定编译级别 471
19.2.7 运行PDE构建 471
19.2.8 自动生成版本限定符 472
19.2.9 保持版本同步 473
19.2.10 构建属性 473
19.2.11 自定义PDE目标 475
19.2.12 使用不同版本的Eclipse编辑 476
19.3 调试PDE构建过程 477
19.3.1 自动生成的构建脚本 477
19.3.2 使用调试器 478
19.4 总结 478
参考文献 479
第20章 GEF:图形编辑框架 480
20.1 GEF体系结构 480
20.2 GEF模型 481
20.3 GEF控制器 481
20.3.1 EditPart类 481
20.3.2 最高级EditPart 483
20.3.3 子EditParts 484
20.3.4 连接EditParts 485
20.3.5 EditPartFactory 488
20.4 GEF图案 488
20.4.1 IFigure 489
20.4.2 Graphics 489
20.4.3 复杂图案 491
20.4.4 连接图案 494
20.4.5 LayoutManager 494
20.5 Eclipse视图中的GEF 496
20.6 Eclipse编辑器中的GEF 498
20.6.1 编辑器输入 499
20.6.2 回到FavoritesManagerEditPart 500
20.6.3 绘画编辑器类 500
20.6.4 FavoritesGEFEditor 501
20.6.5 用户与GEF的交互 503
20.6.6 编辑菜单 506
20.6.7 FreeformLayer和FreeformLayout 508
20.6.8 z顺序 509
20.6.9 删除模型对象 511
20.7 选项板 512
20.7.1 创建GEF选项板 512
20.7.2 CreateCommand 513
20.8 总结 514
参考文献 514
第21章 高级话题 515
21.1 高级搜索—引用项目 515
21.2 访问内部代码 516
21.2.1 Eclipse新闻组 516
21.2.2 Bugzilla—Eclipse bug跟踪
系统 516
21.2.3 用于访问内部代码的选项 517
21.2.4 Eclipse的不同之处 517
21.2.5 相关插件 517
21.2.6 使用片段 518
21.3 适配器 518
21.3.1 IAdaptable 518
21.3.2 使用适配器 518
21.3.3 适配器工厂 519
21.3.4 IWorkbenchAdapter 520
21.4 打开浏览器或创建E-mail 521
21.4.1 IWorkbenchBrowserSupport 521
21.4.2 LaunchURL 521
21.4.3 OpenEmailAction 522
21.5 扩展点中指定的类型 525
21.5.1 参数化的类型 525
21.5.2 在不同的插件中引用类 526
21.6 修改Eclipse以查找部分标识符 527
21.6.1 修改Eclipse基础 527
21.6.2 创建全局操作 528
21.6.3 测试新功能 530
21.6.4 提交更改至Eclipse 530
21.7 标签修饰符 530
21.7.1 声明标签装饰符 531
21.7.2 ILightweightLabelDecorator 531
21.7.3 装饰性标签装饰符 533
21.7.4 IDecoratorManager 534
21.8 后台任务—Jobs API 535
21.9 插件ClassLoader 537
21.10 早期启动 541
21.10.1 管理早期启动 541
21.10.2 取消早期启动 542
21.11 富客户端平台 542
21.12 总结 542
参考文献 542
附录A Eclipse插件和资源 544
附录B Ready for Rational Software 552
· · · · · · (收起)

读后感

评分

书中有插件例子贯穿始末。 讲的面比较全,SWT,jface,编辑器,菜单,常用的扩展点,品牌化,GEF等等,每个部分的比重得当。不像有些书讲了太多的SWT,jface等。常用的扩展点却很少篇幅,一笔带过。

评分

书中有插件例子贯穿始末。 讲的面比较全,SWT,jface,编辑器,菜单,常用的扩展点,品牌化,GEF等等,每个部分的比重得当。不像有些书讲了太多的SWT,jface等。常用的扩展点却很少篇幅,一笔带过。

评分

书中有插件例子贯穿始末。 讲的面比较全,SWT,jface,编辑器,菜单,常用的扩展点,品牌化,GEF等等,每个部分的比重得当。不像有些书讲了太多的SWT,jface等。常用的扩展点却很少篇幅,一笔带过。

评分

书中有插件例子贯穿始末。 讲的面比较全,SWT,jface,编辑器,菜单,常用的扩展点,品牌化,GEF等等,每个部分的比重得当。不像有些书讲了太多的SWT,jface等。常用的扩展点却很少篇幅,一笔带过。

评分

书中有插件例子贯穿始末。 讲的面比较全,SWT,jface,编辑器,菜单,常用的扩展点,品牌化,GEF等等,每个部分的比重得当。不像有些书讲了太多的SWT,jface等。常用的扩展点却很少篇幅,一笔带过。

用户评价

评分

读完这本书后,我有一种强烈的错位感,感觉自己像是被带到了一个宏伟的建筑工地,但手里拿的却是绘制草图的铅笔,而不是钢筋混凝土。开篇对OSGi框架的介绍无可厚非,它是Eclipse生态的基石,但作者似乎过分沉迷于解释“为什么是OSGi”,而非“如何用OSGi快速部署你的功能模块”。我真正关心的是,在实际的插件开发过程中,如何优雅地处理模块间的依赖冲突,尤其是在大型团队协作中,版本控制的策略是怎样的。书中对于Plugin.xml文件的解析,虽然细致,但更多的是对各个标签属性的罗列,缺乏对最佳实践的指导。比如,如何利用扩展点(Extension Points)设计出可供其他开发者扩展的接口,这部分才是插件化设计的核心魅力所在,但在这本书里,这部分内容的处理显得过于保守和模板化。我尝试着去书中寻找一些关于性能调优的章节,毕竟插件的性能直接影响到IDE的响应速度,但几乎没有找到针对内存泄漏排查、启动速度优化等实际痛点的深入探讨。这本书给我的感觉是,它成功地帮你搭建了一个理论框架,但当你真正要往上面添砖加瓦时,你会发现缺少很多关键的“施工技巧”和“工具箱”。

评分

这本书的排版和插图质量倒是相当不错,这一点值得肯定,清晰的图示确实能帮助理解复杂的类结构。但是,当我们谈论“Eclipse插件开发”时,我们不可避免地要面对与现存生态系统的集成问题。我满心期待书中能针对如何与主流的Maven/Gradle构建工具链无缝对接,或者如何利用现代化的Gradle插件来管理插件的生命周期,提供一些前沿的指导。然而,这本书的视角似乎停留在Eclipse自身的构建系统——PDE(Plugin Development Environment)上,这在当前快速迭代的开发环境中,显得有些年代感了。当然,理解PDE是基础,但一个现代的开发者更需要知道如何用最有效率的方式进行持续集成和部署。书中关于调试技巧的章节也相对薄弱,主要集中在标准的Java断点调试,对于插件特有的生命周期调试,比如追踪某个Bundle的激活状态,或者在运行时动态加载/卸载模块时如何快速定位问题,几乎没有提及。这使得这本书更像是一本针对Eclipse 3.x时代基础知识的总结,对于追求效率和现代化工具链的开发者而言,可能略显乏力。

评分

这本书的封面设计倒是挺吸引人的,那种深邃的蓝黑色调,中间点缀着一点点发光的符号,让人立刻联想到代码世界里的神秘与力量感。我原本是抱着极大的期待来翻阅它的,毕竟“Eclipse插件开发”这个主题本身就代表着深入到IDE底层去定制和扩展功能的强大能力。然而,当我真正开始阅读时,才发现内容上似乎有些“形大于神”的味道。书中花了大量的篇幅去介绍Eclipse的架构,什么RCP、SWT/JFace的理论基石,这部分内容其实在官方文档和一些基础教程里已经有非常详尽的阐述了。我期待的是那种手把手、从零开始构建一个实用插件的实战案例,比如如何拦截编译过程、如何自定义视图的布局,或者如何与外部服务进行高效通信。但遗憾的是,书中的例子大多停留在“Hello World”级别的UI组件展示,稍微复杂一点的交互逻辑就一带而过了。比如,关于异步操作和线程安全的讲解,显得有些理论化,缺乏在实际插件开发中处理复杂任务队列时的具体陷阱和解决方案的深入剖析。总而言之,它更像是一本优秀的参考手册的精简版,而不是一本能带你真正走上高阶插件工程师之路的实战指南。对于已经有一定Java和面向对象基础的开发者来说,这本书可能提供的是概念上的梳理,而非技能上的飞跃。

评分

从一个长期使用Eclipse进行复杂项目开发的视角来看,这本书在“错误处理和异常健壮性”方面的论述深度明显不足。插件开发过程中最让人头疼的往往不是功能的实现,而是如何优雅地处理各种意外情况——比如资源加载失败、用户配置错误、或者与遗留系统的接口中断。这本书虽然提到了日志记录(Logging),但缺乏关于如何构建一个统一的、可配置的、多级别错误上报和恢复机制的详细指导。此外,对于插件的国际化(i18n)支持,虽然也提到了资源文件,但缺少针对大型多语言项目中的资源管理策略,例如如何避免硬编码字符串,以及如何利用Eclipse的本地化机制进行高效的维护。我阅读此书时,脑海中一直在构思一个大型企业级插件的蓝图,这个蓝图需要考虑用户权限管理、配置文件的版本迁移、以及与其他企业内部系统的安全通信。很遗憾,这本书的内容似乎更聚焦于工具本身的功能实现,而对构建一个真正可维护、可扩展、经得起时间考验的“产品级”插件所需的工程实践,介绍得比较肤浅。它为我们描绘了一个漂亮的“沙盘”,但没有教我们如何在真正的“战场”上作战。

评分

我不得不承认,我对这本书的期望值可能过于高了,我希望它能像一本高级武功秘籍,传授那些不为人知的“内功心法”。结果读完后,我感觉更像是一本入门级的“招式分解图谱”。例如,书中对SWT/JFX的对比分析,虽然提到了两者在现代开发中的地位差异,但对于如何在一个已有的基于SWT的插件中,平滑地嵌入部分现代化的UI组件(如果可行的话),并没有给出可行的路径。另一个让我感到遗憾的点在于对“未来趋势”的展望几乎缺失。Eclipse本身也在不断演进,比如对模块化、云端化(Che/Theia)的探索,一个有前瞻性的技术书籍应该会触及这些内容,即便只是作为一个引子,引导读者思考插件开发的未来走向。这本书的案例代码似乎有点“静态”,缺乏动态的、响应式的编程范式。我期待看到更多关于响应式编程模型如何应用于插件的事件处理机制中,以构建更健壮、更少阻塞的应用程序。总之,这本书在“What”和“How”的基础层面做得还算扎实,但在“Why Advanced”和“What's Next”的关键领域留下了很大的空白。

评分

插件开发入门推荐书籍之一。

评分

插件开发入门推荐书籍之一。

评分

中文翻译极差,当看到把headless翻译成无头的以后,直接丢掉这本书

评分

插件开发入门推荐书籍之一。

评分

一本开发插件很实用的书。看了一些,了解了插件开发环境和一些接口。

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 onlinetoolsland.com All Rights Reserved. 本本书屋 版权所有