当前,开源框架层出不穷,它为用户提供了通用的解决方案,同时也增加了用户的学习难度。开源是一把“双刃剑”,一方面它共享了资源,提供了一种基于开源框架的开发模式,缩短了软件的开发周期;另一方面,它对用户也提出了更高的要求,提高了入门的学习门槛。
本书内容将分为3部分:第1部分是常用开源框架的介绍。第2部分是Eclipse技术的学习。第3部分介绍对基于Eclipse平台开发工具的研究与实现。开发工具是“一根线”,它利用Eclipse技术,实现了一个构建Web应用的开发平台,支持开源框架的快速构建。
常用开源框架介绍包括Web层框架Struts、数据持久化框架Hibernate、应用集成框架Spring,以及代码生成框架Velocity等,通过对这些框架的学习,可以大大降低开发人员入门的学习门槛,同时也为其他开源框架的学习奠定了基础。
Eclipse开发技术主要包括SWT/JFace开发、Eclipse插件开发和GEF图形编辑框架介绍。通过这一部分的学习,读者将能够利用Eclipse相关技术开发Eclipse插件。
最后,将结合对开源框架的认识,利用Eclipse开发技术,构建一个基于Eclipse的Web应用开发工具,让读者能够通过扩展开发工具来管理开源框架的应用,并通过模型驱动(MDA)的开发方式,快速构建开源框架应用的开发环境,为提高广大程序员的开发效率而努力。
本书内容浅显易懂,所有的实例都以Eclipse工程的形式组织,并按章节的顺序组织在附书光盘中,源代码工程可以导入Eclipse中运行。
第1章 Eclipse安装及使用 3
1.1 Eclipse基本概念 3
1.1.1 简介 3
1.1.2 体系结构 4
1.1.3 插件结构 4
1.2 Eclipse开发环境 5
1.2.1 工作空间 5
1.2.2 工作台 6
1.2.3 调试与运行 7
1.2.4 版本管理 7
1.3 工作台 8
1.3.1 资源 8
1.3.2 资源层次结构 8
1.3.3 构建 9
1.4 插件安装 9
1.4.1 注意事项 9
1.4.2 拷贝安装 10
1.4.3 links安装 10
1.4.4 update安装 11
1.4.5 查看插件 13
1.5 开发Java程序 14
1.5.1 Java项目 14
1.5.2 创建Java程序 15
1.5.3 运行程序与调试 16
1.5.4 类的构建路径 18
1.5.5 项目构建 18
1.6 常用快捷键 19
1.6.1 编辑相关快捷键 19
1.6.2 查看和定位快捷键 19
1.6.3 调试快捷键 20
1.6.4 常用编辑器快捷键 20
1.6.5 其他快捷键 20
1.7 Eclipse与开源 21
1.8 小结 22
第2章 单元测试与重构 23
2.1 单元测试 23
2.1.1 为什么需要单元测试 23
2.1.2 自信编码 23
2.1.3 JUnit 24
2.2 JUnit断言 24
2.2.1 assertEquals断言 24
2.2.2 assertTrue与
assertFalse断言 25
2.2.3 assertNull与
assertNotNull断言 25
2.2.4 assertSame与
assertNotSame断言 25
2.2.5 fail断言 25
2.3 JUnit测试 26
2.3.1 TestCase测试类 26
2.3.2 TestSuite测试组 27
2.3.3 Setup与Tear-down 30
2.3.4 实现自定义的断言 32
2.4 使用Eclipse进行单元测试 33
2.4.1 创建测试用例 33
2.4.2 运行、调试测试用例 35
2.4.3 创建测试组 36
2.5 重构 37
2.6 使用Eclipse进行代码重构 38
2.6.1 结构性重构 39
2.6.2 类级别重构 43
2.6.3 类内部重构 46
2.6.4 Undo and Redo 50
2.7 小结 50
第3章 Web应用 51
3.1 Servlet与JSP 51
3.1.1 Servlet和JSP 51
3.1.2 Servlet和JSP的实现 53
3.2 Web组件的关联关系 55
3.2.1 请求转发 55
3.2.2 URL重定向 56
3.2.3 包含 56
3.3 Web.xml介绍 56
3.4 使用Tomcat插件开发
Web应用 57
3.4.1 安装配置Tomcat插件 57
3.4.2 创建Tomcat项目 59
3.4.3 在Tomcat中运行
调试Web应用 59
3.5 JSP标签 61
3.5.1 标签的处理过程 61
3.5.2 标签的处理类 62
3.5.3 标签的描述文件 63
3.5.4 JSP标签的实现 65
3.6 XML应用 66
3.6.1 XML的优势 66
3.6.2 简单XML文件 68
3.6.3 XML的语法 68
3.6.4 使用JDOM读写
XML文档 70
3.7 AJAX应用 73
3.7.1 什么是AJAX 73
3.7.2 AJAX功能 74
3.7.3 XMLHttpRequest对象 74
3.7.4 AJAX实例 76
3.8 小结 80
第4章 Web应用框架Struts 81
4.1 Struts框架 81
4.1.1 Struts的起源 81
4.1.2 Struts简介 81
4.2 MVC模式 82
4.2.1 Model1和Model2简介 82
4.2.2 MVC在Struts中的应用 83
4.3 Struts应用的开发步骤 85
4.3.1 开发流程 85
4.3.2 配置Struts应用 86
4.4 Struts框架的应用:用户登录 88
4.4.1 需求 89
4.4.2 构建视图 89
4.4.3 构建模型 91
4.4.4 构建控制器 93
4.4.5 创建配置文件 94
4.4.6 Struts应用运行结果 97
4.5 通过StrutsIDE插件开发
Struts应用 98
4.5.1 前提条件 98
4.5.2 开发Struts应用 98
4.6 小结 100
第5章 Struts开发实例:购物车 101
5.1 购物车的结构 101
5.1.1 实现的功能 101
5.1.2 数据处理流程 101
5.2 购物车的入口 102
5.2.1 Web.xml文件 102
5.2.2 Struts-config.xml文件 103
5.3 创建Action 108
5.3.1 基类及实现 108
5.3.2 购物车Action的实现 111
5.4 创建服务类 113
5.4.1 初始化工厂类 114
5.4.2 服务类 116
5.5 业务对象 119
5.6 购物车实现 121
5.7 部署及运行 124
5.8 小结 126
第6章 数据库应用 127
6.1 SQL语言 127
6.1.1 数据定义语句 127
6.1.2 数据查询语句 129
6.1.3 数据操纵语句 132
6.2 JDBC应用 133
6.2.1 概述 133
6.2.2 Connection对象 133
6.2.3 DriverManager对象 134
6.2.4 Statement对象 135
6.2.5 ResultSet对象 135
6.2.6 PreparedStatement
对象 136
6.2.7 CallableStatement
对象 137
6.3 JDBC实例 138
6.4 SQL Explorer插件 140
6.5 小结 143
第7章 对象持久化框架Hibernate 145
7.1 Hibernate概述 145
7.1.1 持久层解决方案 145
7.1.2 Hibernate处理方式 146
7.1.3 第三方库 147
7.2 对象/关系映射 147
7.2.1 持久化类 147
7.2.2 对象/关系映射
描述文件 149
7.3 数据持久化 152
7.3.1 Hibernate处理流程 153
7.3.2 SessionFactory的配置 153
7.3.3 操作持久化数据 155
7.4 Hibernate查询语言 157
7.4.1 查询语句 157
7.4.2 where 子句 159
7.4.3 分组与排序 159
7.4.4 统计函数 160
7.5 Hibernate实例 160
7.5.1 持久化类 161
7.5.2 Hibernate映射文件 163
7.5.3 Hibernate处理类 164
7.6 Hibernate Synchronizer插件 169
7.7 小结 171
第8章 Hibernate开发 173
8.1 Hibernate初始化 173
8.1.1 Hibernate配置文件 173
8.1.2 程序初始化 174
8.1.3 映射文件和持久化类 175
8.2 数据查询 177
8.2.1 选择与条件查询 177
8.2.2 分组与排序查询 178
8.2.3 使用SQL语句查询 179
8.2.4 Criteria查询 180
8.3 对象新增与更新 181
8.3.1 新增记录 181
8.3.2 更新加载记录 183
8.3.3 新增或更新记录 184
8.4 删除数据 184
8.4.1 指定ID删除记录 185
8.4.2 删除符合条件的记录 185
8.5 级联操作 186
8.5.1 映射文件和持久化类 186
8.5.2 实现 189
8.6 小结 192
第9章 应用整合框架Spring 193
9.1 概述 193
9.1.1 Spring框架 193
9.1.2 控制反转 194
9.1.3 面向方面的编程 195
9.2 控制反转IoC 196
9.2.1 容器 196
9.2.2 依赖注入 198
9.3 资源 200
9.3.1 Resource 接口 201
9.3.2 内置Resource实现 202
9.4 IoC实例 203
9.4.1 描述文件 203
9.4.2 定义Bean的实现类 204
9.4.3 创建容器 205
9.5 面向方面AOP 206
9.5.1 AOP概念 206
9.5.2 Spring AOP的
功能和目标 208
9.6 Spring AOP的实现 208
9.6.1 Spring中的切入点 208
9.6.2 Spring中的通知类型 210
9.6.3 ProxyFactoryBean
创建AOP代理 213
9.7 AOP实例 215
9.7.1 描述文件 215
9.7.2 被代理对象及通知 217
9.7.3 主控类 219
9.8 小结 220
第10章 Spring整合Web应用 221
10.1 程序设计 221
10.1.1 功能需求 221
10.1.2 用户界面 221
10.1.3 程序结构 222
10.2 配置文件入口 222
10.3 服务层 225
10.3.1 Spring配置文件 225
10.3.2 实现类 227
10.4 Web层 228
10.4.1 Form实现 228
10.4.2 Action实现 230
10.5 数据访问层 233
10.5.1 持久化对象 233
10.5.2 数据访问对象 236
10.6 发送通知邮件 240
10.7 运行效果 243
10.8 小结 244
第11章 代码生成框架Velocity 245
11.1 Velocity简介 245
11.2 Helloworld实例 246
11.2.1 模板文件 246
11.2.2 Java程序 247
11.2.3 处理流程 248
11.3 基本语法 249
11.3.1 注释 249
11.3.2 引用 250
11.3.3 运算符 251
11.4 指令 253
11.4.1 赋值指令 253
11.4.2 条件指令 254
11.4.3 循环 254
11.4.4 包含 255
11.4.5 解析 255
11.4.6 停止 256
11.4.7 宏 256
11.5 模板嵌套 256
11.6 模板的编码格式 258
11.7 宏及方法调用 259
11.8 模板引擎和上下文 261
11.9 模板事件 262
11.10 生成动态页面 265
11.11 小结 268
第12章 ANT构建AppFuse应用 269
12.1 ANT简介 269
12.2 构建文件 270
12.2.1 构建文件描述 271
12.2.2 ANT常用任务 272
12.2.3 ANT命令行 276
12.3 ANT实例 277
12.4 AppFuse简介 279
12.5 使用AppFuse的理由 280
12.5.1 测试 280
12.5.2 集成 281
12.5.3 自动化 282
12.5.4 安全特性和可扩展性 282
12.5.5 使用AppGen
生成代码 283
12.5.6 文档 283
12.5.7 社区 283
12.6 ANT构建AppFuse
应用 283
12.6.1 开发环境 283
12.6.2 构建步骤 285
12.7 小结 292
第2部分 Eclipse的相关技术
第13章 SWT组件 295
13.1 SWT简介 295
13.1.1 概述 295
13.1.2 基本特性 296
13.2 SWT程序 297
13.2.1 加入SWT依赖的包 297
13.2.2 “Hello world”程序 299
13.2.3 运行SWT应用 300
13.3 使用Swing组件 301
13.3.1 添加Swing的组件 301
13.3.2 程序运行效果 302
13.4 基类Control 303
13.4.1 继承关系 303
13.4.2 Control类的
常用方法 304
13.5 常用组件 305
13.5.1 按钮 305
13.5.2 标签 306
13.5.3 文本框 307
13.5.4 下拉框 308
13.5.5 列表 310
13.6 容器组件 311
13.6.1 面板容器Composite 311
13.6.2 分组容器Group 313
13.6.3 分页签容器
TabFolder和TabItem 314
13.6.4 分隔框容器SashForm 316
13.7 其他组件 318
13.7.1 菜单组件 318
13.7.2 工具栏组件ToolBar
和ToolItem 320
13.7.3 工具栏组件CoolBar
和CoolItem 323
13.7.4 滚动组件Slider 324
13.7.5 刻度组件Scale 326
13.7.6 进度条组件
ProgressBar 328
13.8 小结 329
第14章 SWT事件与布局 331
14.1 事件介绍 331
14.2 鼠标事件 332
14.2.1 MouseListener接口 332
14.2.2 MouseMoveListener
接口 332
14.2.3 MouseTrackListener
接口 333
14.2.4 鼠标事件实例 333
14.3 键盘事件 335
14.3.1 KeyListener接口 336
14.3.2 键盘事件实例 336
14.4 焦点事件 337
14.4.1 FocusListener接口 337
14.4.2 焦点事件实例 338
14.5 窗口控制事件 339
14.5.1 ControlListener接口 339
14.5.2 窗口控制事件实例 340
14.6 选择事件 341
14.6.1 SelectionListener
接口 341
14.6.2 选择组件事件实例 341
14.7 其他常用事件 342
14.7.1 HelpListener、VerifyListener
和ModifyListener
监听器的功能 342
14.7.2 HelpListener、VerifyListener
和ModifyListener
监听器实例 343
14.8 布局介绍 345
14.9 FillLayout布局 346
14.9.1 FillLayout的风格 346
14.9.2 FillLayout布局实例 347
14.10 RowLayout布局 348
14.10.1 RowLayout的风格 348
14.10.2 RowLayout
布局实例 349
14.11 GridLayout布局 350
14.11.1 GridLayout的风格 351
14.11.2 GridData的
相关属性 351
14.11.3 GridLayout
布局实例 353
14.12 自定义布局 357
14.12.1 Layout类 357
14.12.2 创建自己的布局类 357
14.13 小结 360
第15章 Viewer组件与对话框 361
15.1 JFace程序 361
15.1.1 “Hello world”程序 361
15.1.2 运行“Hello world”
程序 362
15.2 TreeViewer组件 362
15.2.1 TreeViewer构建步骤 362
15.2.2 内容提供器(ItreeContent-
Provider) 363
15.2.3 标签提供器
(ILabelProvider) 364
15.2.4 TreeViewer实例 364
15.3 TableViewer组件 368
15.3.1 TableViewer构建步骤 369
15.3.2 内容提供器(Istructured-
ContentProvider) 369
15.3.3 标签提供器(ItableLabel-
Provider) 369
15.3.4 TableViewer实例 370
15.4 消息对话框 379
15.4.1 消息对话框的功能 379
15.4.2 消息对话框实例 380
15.5 输入对话框 383
15.5.1 输入对话框的功能 383
15.5.2 输入对话框实例 383
15.6 进度监视对话框 385
15.6.1 进度监视对话框的
功能 385
15.6.2 进度监视对话框实例 386
15.7 自定义对话框 388
15.7.1 带标题区域对话框 388
15.7.2 自定义对话框实例 389
15.8 常用系统对话框 392
15.8.1 打印对话框
(PrintDialog) 392
15.8.2 颜色对话框
(ColorDialog) 392
15.8.3 字体对话框
(FontDialog) 393
15.8.4 文件对话框
(FileDialog) 394
15.8.5 目录对话框
(DirectoryDialog) 395
15.9 小结 395
第16章 Eclipse插件开发 397
16.1 插件结构 397
16.1.1 简介 397
16.1.2 描述文件 397
16.2 插件调试 401
16.3 扩展视图 402
16.3.1 视图分类 402
16.3.2 常用视图可实现的
功能 403
16.3.3 创建“Tree viewer”
视图 403
16.3.4 “Tree viewer”
插件扩展点 404
16.3.5 视图扩展点的实现类 405
16.3.6 运行“Tree viewer”
视图 410
16.4 扩展编辑器 411
16.4.1 编辑器分类 411
16.4.2 常用编辑器
可实现的功能 411
16.4.3 编辑器和视图的区别 412
16.4.4 自定义文本编辑器 412
16.4.5 实现类“FileEditor” 413
16.4.6 运行文本编辑器 415
16.5 扩展透视图 415
16.5.1 简介 416
16.5.2 扩展透视图 416
16.5.3 实现透视图 418
16.6 实现菜单工具栏 420
16.6.1 “actionSets”扩展点
信息 420
16.6.2 实现类
“SampleAction” 422
16.7 实现项目特性 422
16.7.1 项目扩展点 423
16.7.2 项目特性扩展点及
实现类 423
16.7.3 构建器扩展点及
实现类 425
16.7.4 工程向导扩展点及
实现类 428
16.7.5 首选项页扩展点及
实现类 430
16.8 实现联机帮助 432
16.8.1 联机帮助扩展点的
实现 432
16.8.2 联机帮助文档的结构 433
16.8.3 在联机帮助中
在线调用Java类 435
16.9 小结 436
第17章 图形编辑框架 437
17.1 GEF概述 437
17.1.1 GEF简介 437
17.1.2 GEF工作原理 437
17.2 模型 438
17.2.1 模型的功能 438
17.2.2 模型的实现 438
17.3 视图 442
17.3.1 视图的功能 442
17.3.2 视图的实现 443
17.4 控制器 444
17.4.1 控制器的功能 444
17.4.2 控制器的实现 444
17.5 请求和编辑策略 447
17.5.1 请求和编辑策略 447
17.5.2 编辑策略的实现 448
17.6 命令 449
17.6.1 命令的功能 449
17.6.2 命令的实现 449
17.7 模型同步 450
17.7.1 模型同步的功能 451
17.7.2 模型同步的实现 451
17.8 选项板 452
17.8.1 选项板(PaletteRoot)
的功能 452
17.8.2 选项板的实现 452
17.9 小结 454
第3部分 基于Eclipse的开发工具
第18章 开发工具的实现 457
18.1 开发工具的基本概念 457
18.1.1 业务平台与
开发工具的关系 457
18.1.2 国内外开发
工具的现状 458
18.1.3 开发工具的
未来趋势 458
18.2 开发环境及工具运行前提 459
18.3 功能定义 460
18.3.1 模型驱动 460
18.3.2 模型编辑器 460
18.3.3 代码生成 461
18.3.4 插件结构及依赖关系 462
18.3.5 支持开发过程 463
18.4 开发工具工程创建向导 463
18.4.1 定义扩展点 463
18.4.2 实现向导 464
18.4.3 添加向导页 467
18.5 构建路径的实现 475
18.5.1 类路径扩展 475
18.5.2 初始化 475
18.5.3 构建类路径 476
18.6 启动初始化的实现 479
18.6.1 startup扩展点 479
18.6.2 startup扩展点实现 479
18.7 透视图的实现 481
18.7.1 透视图扩展点 481
18.7.2 透视图实现 481
18.8 首选项的实现 483
18.8.1 首选项扩展点 484
18.8.2 首选项实现 484
18.9 属性页的实现 486
18.9.1 属性页扩展点 486
18.9.2 属性页实现 487
18.10 小结 492
第19章 UML编辑器的实现 493
19.1 程序的软件结构 493
19.1.1 实现功能 493
19.1.2 程序的界面要求 494
19.1.3 模型的元数据 494
19.2 编辑器的实现 497
19.2.1 编辑器的功能 497
19.2.2 编辑器的实现 497
19.3 模型的实现 504
19.3.1 PropertyAwareObject
类 505
19.3.2 Table类 506
19.3.3 Column类 510
19.3.4 Schema类 512
19.3.5 Relationship类 514
19.4 视图的实现 515
19.4.1 TableFigure类 515
19.4.2 SchemaFigure类 517
19.4.3 ColumnsFigure类 517
19.5 控制器的实现 518
19.5.1 TablePart的实现 518
19.5.2 RelationshipPart
的实现 528
19.6 EditPartFactory和Palette
的实现 530
19.6.1 SchemaEditPartFactory 530
19.6.2 PaletteRoot 531
19.7 EditPolicy的实现 533
19.7.1 TableNodeEditPolicy(模型
连线的编辑策略) 533
19.7.2 TableLayoutEditPolicy(子模
型布局的编辑策略) 535
19.7.3 TableContainerEditPolicy
(处理模型创建请求的
编辑策略) 536
19.7.4 TableEditPolicy(模型
编辑的编辑策略) 537
19.7.5 TableDirectEditPolicy
(处理直接编辑的
编辑策略) 538
19.8 Command的实现 539
19.8.1 模型连线命令 539
19.8.2 模型拖动命令 542
19.8.3 模型创建命令 543
19.8.4 模型删除命令 544
19.8.5 模型直接编辑命令 546
19.9 大纲的实现 548
19.10 小结 549
第20章 代码生成插件 551
20.1 模型驱动 551
20.1.1 代码生成引擎 551
20.1.2 业务对象(BO)
模型代码生成 551
20.1.3 流程定义模型
代码生成 552
20.2 业务对象代码生成 555
20.2.1 业务对象生成Action 556
20.2.2 解析Ecore模型 558
20.2.3 持久化类模板 559
20.2.4 HBM文件模板 560
20.3 流程代码生成 562
20.3.1 流程代码生成Action 562
20.3.2 流程解析 564
20.3.3 流程模板 568
20.3.4 JET完成代码合并 570
20.4 代码生成模块的实现 573
20.4.1 代码生成公用类 573
20.4.2 流程代码生成基类 575
20.4.3 流程代码生成实现类 580
20.5 小结 582
第21章 开发工具的其他功能 583
21.1 生成数据表结构 583
21.1.1 生成数据表结构
Action 583
21.1.2 生成数据表 584
21.2 发布部署 585
21.2.1 使用Tomcat插件 585
21.2.2 发布工程Action 586
21.2.3 处理发布进度 587
21.3 数据库导入 588
21.4 帮助插件 589
21.5 公用类 590
21.5.1 当前工程管理 590
21.5.2 异常管理 591
21.5.3 文件管理 592
21.6 有待添加的功能 598
21.7 小结 598
第22章 深入Eclipse开发 599
22.1 扩展属性视图 599
22.1.1 属性视图接口
IPropertySource 600
22.1.2 属性视图的实现 601
22.2 扩展大纲视图 603
22.2.1 大纲视图接口
IContentOutlinePage 603
22.2.2 大纲视图的实现 605
22.3 构造编辑器输入
数据EditorInput 606
22.3.1 编辑器输入接口
IEditorInput 606
22.3.2 IEditorInput的实现 607
22.4 操纵编辑器 609
22.4.1 查找编辑器 609
22.4.2 打开和关闭编辑器 610
22.5 选择与监听 610
22.5.1 选择事件提供者(Selection
Provider) 611
22.5.2 选择服务(Selection
Service) 612
22.5.3 选择事件监听器(Selection
Listener) 614
22.5.4 实例 614
22.6 命令堆栈 617
22.6.1 命令堆栈
(CommandStack) 617
22.6.2 监听器 619
22.7 适配器 619
22.7.1 适配器接口
(IAdaptable) 620
22.7.2 适配器的实现 621
22.8 UI持久化 622
22.8.1 持久化机制 622
22.8.2 UI持久化与
恢复的实现 623
22.9 深入Workbench 627
22.9.1 Workbench中
实现类的关系 627
22.9.2 Part的生命周期 628
22.10 资源监听与访问 630
22.10.1 资源监听器 630
22.10.2 资源访问器 631
22.10.3 资源监听的实现 632
22.11 小结 634
附录A Tomcat安装及使用 635
A.1 Tomcat安装 635
A.2 Tomcat配置使用 635
附录B MySQL安装及使用 639
B.1 MySQL介绍 639
B.1.1 简介 639
B.1.2 准备条件 639
B.1.3 安装组件 640
B.1.4 使用配置向导 640
B.2 安装及使用 640
B.2.1 安装MySQL 640
B.2.2 MySQL使用 641
附录C CVS管理 643
C.1 术语 643
C.2 模块的输入与输出 644
C.2.1 连接CVS服务器 644
C.2.2 导入Eclipse项目 644
C.2.3 导出Eclipse项目 645
C.3 日常操作 645
C.3.1 提交(Commit) 646
C.3.2 更新(Update) 647
C.3.3 比较、替换 647
开源是当前软件开发的热门话题,它也正在促进着软件事业的发展。当前,开源框架层出不穷,它为用户提供了通用的解决方案,但也提高了用户的学习难度。开源是一把“双刃剑”,一方面共享了资源,提供了一种基于开源框架的开发模式,缩短了软件的开发周期,另一方面,它对用户也提出了更高的要求,提高了学习入门的门槛。
对开发人员来说,一方面要努力学习新的开源框架,另一方面,要为新的开源框架被淘汰做好准备,而且要学会迎接另一个开源框架的诞生。如此下来,程序员的日子是多么的“辛苦”就可想而知了。
开源世界是一个大家庭,Eclipse也是开源世界的一员,但它远远超越了普通开源项目的概念。Eclipse本身就是一个大舞台,它的内容太丰富了,它的设计太经典了,它可以使用的第三方资源太多了,以至于不跟上Eclipse的步伐,就有可能落伍了。
在Eclipse中,开发人员不但可以使用现有的开源项目,还能构建基于Eclipse的开源项目,可以毫不夸张地说,在Eclipse中“只有想不到的,没有做不到的”。
Eclipse不仅是一个Java的开发环境,更重要的是它自身是一个可以扩展的平台,在这个平台上,用户能够创建自己的应用。Eclipse是纯Java开发的,它有着天然可以跨越不同操作系统的优势,Eclipse中的插件可以不做任何的修改,就能够移植到其他的操作系统中。
在开源框架大行其道的日子里,在Eclipse风风火火的环境下,程序员可以做什么呢?
本书将介绍几个常用的开源框架,有Web应用框架Struts、数据持久化框架Hibernate、集成框架Spring及代码生成框架Velocity等,通过对这些框架的学习,可以大大降低开发人员入门的学习门槛,同时也为其他开源框架的学习奠定了基础。
本书还将介绍Eclipse相关开发技术,主要包括SWT/JFace、Eclipse插件开发和GEF图形编辑框架。结合对开源框架的认识,最后将利用Eclipse开发技术,构建一个基于Eclipse平台的Web应用开发工具,希望通过此开发工具能够管理开源框架的应用,快速构建Web应用开发环境,从而提高程序员的开发效率。
开发工具可以集成开源框架,构建通用开源框架的开发环境,使用户可以不用太多关心框架的实现细节。开发工具已经可以完全独立地在Eclipse中运行,而且已经实现了基本的特征。本书中开发工具并没有完全实现,本书只算是开发工具研究与实现的一个开始,希望广大的读者都能够参与进来,为提高程序员的开发效率和改变程序员的开发方式而努力,也为开源事业尽自己的一份力。
本书的组织结构和主要内容
本书内容深入浅出,首先介绍了Java中比较流行的几种开源框架,以及如何在Eclipse中使用这些开源框架,其次介绍了Eclipse的实现技术,包含SWT/JFace及插件开发,最后以Eclipse技术为基础,对支持开源框架提供了一套解决方案,以Eclipse平台为基础开发一套快速构建开源框架应用的开发工具。
本书把要在Eclipse中开发的一套插件统称为“Web应用开发工具”,实际上它可以构建其他的应用。通过开发工具,可以使开源框架应用变得更简单,可以使开发人员不用太多关心框架的实现细节。
本书内容分为3个部分:
第1部分为第1章到第12章:介绍Eclipse及开源框架的应用。
第1章:介绍了Eclipse的一些概念、插件安装方式、Eclipse中的常用快捷键。这些不但是Eclipse中Java开发的基础,也是插件开发的必修课。
第2章:介绍了单元测试与重构的概念,以及其在Eclipse中的实施,使用户能够更自信地编码,提高代码的质量。
第3章:介绍了Web应用中常用的相关技术,包括Servlet、JSP、标签、XML及AJAX,每一种技术都可以成为一个单独的领域。在本章用户需要了解相关的实例,为后面章节的学习做准备。
第4章:介绍Web应用框架Struts,Struts框架具有组件的模块化、灵活性和重用性的优点,同时简化了基于MVC的Web应用程序的开发。
第5章:介绍Struts开发实例——购物车,本章通过Struts开发了一个虚拟购物车的Web应用。虽然此应用还不完善,但也勾画出了一个Web应用的几层关系及数据的流向,用户可以修改这些关系来适应自己的需求,开发出更适合自己要求的系统。
第6章:介绍了数据库的一些基本常识,了解SQL语言的基本语法和如何通过JDBC操作数据库。
第7章:介绍了对象持久化框架Hibernate。Hibernate是功能强大的O/R Mapping的工具,它提供Java应用和关系数据库之间的桥梁,负责Java对象和关系数据库之间的映射。通过Hibernate,开发人员能够以面向对象的思维去处理关系数据库的问题,而不用被JDBC简单的数据访问接口所束缚。
第8章:介绍了Hibernate开发,通过一些实例,重点让读者知道如何使用Hibernate进行开发。
第9章:介绍了应用整合框架Spring,引导读者理解Spring的基本概念,并通过实例介绍IOC和AOP的技术。
第10章:介绍了通过Spring整合Web应用,本章通过一个简单用户管理模块,介绍如何用Spring整合Struts和Hibernate。
第11章:介绍了代码生成框架Velocity。Velocity 提供了通用的、开放源代码的模板解决方案,可以在报告生成和数据转换应用程序中独立使用,本章将结合实例,介绍模板的技术及模板语言VTL。
第12章:介绍了通过ANT构建AppFuse应用,其中包括ANT语法及ANT使用,最后通过使用ANT来构建AppFuse应用。
第2部分为第13章到第17章:主要介绍Eclipse的相关技术,包括SWT/JFace和插件开发。
第13章:本章介绍了开发SWT的应用程序及一些常用的SWT组件,这些是SWT开发的基础,而SWT又是插件开发的基础,掌握这一章的内容对后面的学习会有较大的帮助。
第14章:本章介绍了SWT中常用的事件和布局,对开发SWT应用是非常有用的。SWT中的事件和布局不止本章所介绍的这些,但使用的方式都大同小异,用户可以定义自己的实现方式。
第15章:本章主要介绍JFace中的Viewer组件与对话框技术。JFace中封装了Viewer组件实现,用户可以使用Viewer组件提供的强大功能。另外对话框在SWT开发中也是不可缺少的,SWT封装了常用对话框的实现,用户也可以自定义实现自己的对话框。
第16章:本章主要介绍Eclipse插件开发技术。Eclipse最有魅力的地方就是它的插件体系结构,在这个体系中重要的概念是扩展点(extension points)。扩展点是Eclipse的精华所在,本章将会介绍Eclipse中常用扩展点的实现。
第17章:本章主要介绍图形编辑框架GEF。GEF是一个完善的图形编辑框架,它提供了图形编辑的解决方案,用户可以通过它的机制构造出功能非常强大的图形编辑器。但GEF还是比较复杂的框架,在提供了图形编辑的各个环节松耦合的灵活性之时,也增加了用户必须了解各环节实现的学习时间。
第3部分为第18章到第22章:开发基于Eclipse的开发工具。
第18章:本章主要介绍基于Eclipse的开发工具扩展点的实现,目的是要开发出一个基于Eclipse平台的快速开发Web应用的产品,并把它作为开源项目的一部分,也欢迎读者能够参与其中。
第19章:本章介绍了一个UML模型编辑器的实现,程序实现了GEF编辑器所具备的基本功能,编辑器数据并通过Ecore模型保存。
第20章:本章介绍了业务对象模型及流程定义模型,描绘了以模型驱动的开发方式的一种解决方案,并提供了代码生成插件的基本实现。
第21章:本章介绍了开发工具实现的其他一些功能,包括通过模型生成数据库表结构、发布工程及从数据库表导入生成业务对象模型。
第22章:本章介绍Eclipse的一些底层技术的实现。开发工具要充分发挥Eclipse潜能,还有很多的事情要做,可以说只要想得到的,在Eclipse中都能够实现。要完善开发工具的功能,还要用到Eclipse中很多实现的机制,笔者相信研究这些实现机制对开发人员编程能力的提升将会有很大的帮助。
如何阅读本书
本书的所有代码都是可以在Eclipse中运行的,所有代码都按章节组织,在附书光盘上可以找到。在每一章节的例程代码中,为了节省篇幅没有加入Java类的package包名和import类,读者最好能够把本书光盘的源代码导入到Eclipse中,对照着本书介绍的内容学习,效果会比较好。
本书介绍了3个部分,其中开源框架和Eclipse插件开发技术是相互独立的,而开发工具是建立在开源框架和Eclipse插件技术之上的。
开源框架又分为几部分,主要包括Web技术、数据库技术及中间层技术,这几个部分也有一定的独立性,读者如果对某一部分比较感兴趣,没有必要从第1章开始学习。
希望本书能够成为您快速学习开源框架和Eclipse技术的渠道。本书的实例比较丰富,而且完全可以在Eclipse中运行,读者可以按如下顺序学习本书的内容。
(1)了解某一部分的结构和大概内容。
(2)把这部分源代码的工程导入到Eclipse中。在“Package Explorer”中按鼠标右键→选择import菜单命令导入Eclipse工程(Existing Projects into Workspace选项)。
(3)了解代码运行的前提条件,例如数据库配置、Web容器配置等。
(4)按照本书介绍的步骤学习,并对照本书介绍
无封面