Java极限编程

Java极限编程
作 者: Richard Hightower Nicholas Lesiecki 唐一丁 蔡永航 唐一丁
出版社: 机械工业出版社
丛编项: 软件工程技术丛书 前沿论题系列
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: Java
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《Java极限编程》作者简介

内容简介

本书通过介绍一系列开源Java开发工具和生动的实例,描述如何用极限编程(eXtremeProgramming)理论指导具体的开发行为,从而使Java开发更加灵活、高效、低成本。本书主要讲述J2EE和极限编程的基础,重点介绍如何掌握极限编程过程中最难的部分:测试、整合和部署。全书以基础开篇,接着辅以范例并对著名的宠物商店范例进行功能性剖析。在了解了各个工具的概念后,作者介绍了测试的实践,一步一步指导读者掌握极限编程开发的技术要点。本书内容丰富、详实、生动,适合作为Java软件开发人员的参考书。考虑到富有经验的Java程序员的需要,本书首先简短介绍极限编程方法及技术,随后探究本书始终沿用的一个应用程序范例来体验工具的作用和开发活动中的实践。作者在介绍每一个工具时都提供关键概念的描述以及代码范例,并一步一步带领读者掌握极限编程开发方面的技术。本书覆盖了以下极限编程的主题:自动单元测试和功能测试通过自动构建和自动部署进行持续整合重构和持续整合的价值如何用Ant、JUnitPerf、Cactus,HTTPUnit和JMeter来实现极限编程中的目标相关的网站包含以下内容:本书中涉及的范例代码极限编程软件工具的升级版本实用的极限编程站点链接软件界信奉的哲学是“不变则亡”。极限编程为敏捷地应对软件开发中的各种变化提供了全新思路,本书是RichardHightower和NicholasLesiecki关于极限编程(ExtremeProgramming)的创新之作,讲述了这种能使开发人员快速、有效、低成本地创建灵活高效软件的方法论、本书将为您演示如何使用开源(OpenSource)Java开发工具实现Java开发中的极限编程方法,并使大家掌握极限编程中最复杂的开发过程:测试、整合及部署。

图书目录

译者序
致谢
作者简介
前言
第一部分

关键概念介绍
第1章

Extreme

Programming介绍

2
1.1

极限编程概览

2
1.1.1

极限编程开发方法的四大价值

2
1.1.2

极限编程的五个原则

3
1.2

极限编程的12个实践原则

5
1.2.1

计划的制定

5
1.2.2

小版本

5
1.2.3

简单设计

6
1.2.4

测试

6
1.2.5

持续整合

6
1.2.6

重构

7
1.2.7

配对编程

7
1.2.8

代码共享

8
1.2.9

每周只工作40小时

9
1.2.10

现场客户

9
1.2.11

隐喻

9
1.2.12

编码标准

9
1.3

采用极限编程吗

9
1.4

小结

10
第2章

J2EE

部署

12
2.1

概述

12
2.2

JAR文件

14
2.2.1

JAR文件和applet

14
2.2.2

可执行的JAR文件

15
2.3

Web应用程序和WAR文件

16
2.4

EJB和EJB

JAR文件

18
2.5

企业级应用程序和EAR文件

21
2.6

小结

21
第3章

应用程序范例

23
3.1

概述

23
3.2

简单范例:基于Model2的HelloWorld

23
3.3

范例:宠物商店

24
3.4

宠物商店的最初版本

25
3.4.1

model类(公共的接口)

25
3.4.2

dbmodel类(实现)

26
3.4.3

数据库模型

27
3.4.4

Web接口

28
3.4.5

构建系统

31
3.5

用测试数据设置数据库:Ant小试牛刀

34
3.6

完整的代码清单

39
3.6.1

model包的完整代码清单

39
3.6.2

dbmodel包的完整代码清单

43
3.6.3

test包的完整代码清单

49
3.6.4

JSP和Web.xml的完整代码清单

55
3.7

小结

60
第二部分

掌握工具
第4章

使用Ant进行持续整合

62
4.1

概述

62
4.2

Ant使用基础

63
4.3

标准目标

65
4.3.1

简单的范例

65
4.3.2

使用特性一起运作

67
4.3.3

路径设置和fileset设置

68
4.3.4

条件性目标

70
4.3.5

使用过滤器

72
4.3.6

嵌套构建

73
4.4

小结

73
第5章

使用Ant建立Java应用程序

75
5.1

概述

75
5.2

Hello

World

Model项目

75
5.2.1

model类概览

76
5.2.2

为Model建立项目目录结构

77
5.2.3

为共享类库建立构建文件

77
5.2.4

model项目构建文件的分析

78
5.2.5

运行Ant构建文件

81
5.3

Hello

World应用程序项目

82
5.3.1

应用程序的Java类概览

82
5.3.2

为应用程序建立项目目录结构

83
5.3.3

为独立应用程序建立清单文件

83
5.3.4

为独立应用程序建立Ant构建文件

83
5.4

Hello

World主项目

86
5.4.1

建立主构建文件

86
5.4.2

关于主构建文件的分析

87
5.5

applet项目

88
5.5.1

applet类概览

88
5.5.2

为applet程序建立构建文件

91
5.5.3

使用Ant构建applet程序

92
5.6

Hello

World

功能翻新

93
5.7

小结

93
第6章

使用Ant建立J2EE应用程序

94
6.1

概述

94
6.2

Hello

World

94
6.3

Web应用程序项目

95
6.3.1

Web应用程序项目的目录结构

95
6.3.2

HelloWorldServlet.java

96
6.3.3

HelloWorldServlet分析

97
6.3.4

HelloWorld.jsp

98
6.3.5

HelloWorld

Web应用程序的部署
描述符

98
6.3.6

HelloWorld

Web应用程序的构建文件

99
6.3.7

构建和部署Web应用程序

105
6.3.8

运行Web应用程序

107
6.3.9

HelloWorld.jsp

applet

传递

108
6.3.10

在WAR文件中包含applet

109
6.4

企业级JavaBean

110
6.4.1

企业级Bean项目的目录结构

110
6.4.2

HelloWorld实体Bean

111
6.4.3

会话Bean

113
6.4.4

Shadow代理Bean

116
6.4.5

企业级JavaBean部署描述符

118
6.4.6

企业级Bean的构建文件

120
6.4.7

企业级Bean构建文件的分析

123
6.4.8

在Web应用程序构建文件中定义
ejb特性

125
6.4.9

运行构建文件

126
6.5

EAR

企业级应用程序

127
6.5.1

HelloWorld主项目构建文件

127
6.5.2

企业级应用程序构建文件的分析

129
6.5.3

企业应用程序部署描述符

131
6.6

宠物商店案例学习

132
6.7

小结

134
第7章

使用JUnit进行单元测试

136
7.1

JUnit概述

137
7.1.1

编写一个测试案例

138
7.1.2

使用Ant整合JUnit

143
7.2

案例研究:在宠物商店案例中
加入实体Bean

149
7.2.1

现有的JUnit测试概述

149
7.2.2

在宠物商店案例中加入EJB

157
7.2.3

建立一个Ant构建文件用以部署
我们的实体Bean

169
7.2.4

修改Test构建文件用以测试
我们的实体Bean

175
7.2.5

学习案例的小结

177
7.3

小结

177
第8章

使用Cactus测试容器服务

178
8.1

概述

178
8.2

为什么要做容器内测试

178
8.2.1

隔离测试:模拟对象

178
8.2.2

上下文测试:整合测试

179
8.2.3

一个混合手法

180
8.3

为什么使用Cactus

180
8.4

安装Cactus

181
8.4.1

服务器端安装

182
8.4.2

客户端安装

183
8.4.3

一个简单的范例

184
8.5

Cactus系统架构

185
8.5.1

开始执行

185
8.5.2

beginXXX()方法

186
8.5.3

调用转向器Servlet

186
8.5.4

服务器端安装

186
8.5.5

服务器端执行

187
8.5.6

结果集合和后处理

187
8.6

编写Cactus测试

188
8.6.1

被测试的代码

188
8.6.2

继承适当的类

190
8.6.3

beginXXX()方法

190
8.6.4

隐含对象

191
8.6.5

setUp()和tearDown()

192
8.6.6

testXXX()

193
8.6.7

endXXX()

193
8.7

Cactus与Ant的使用

195
8.8

Filter测试

196
8.9

JSPTestCase和自定义标记

198
8.10

案例学习:使用自定义标记的
宠物商店程序

213
8.10.1

业务需求

213
8.10.2

寻找一个开始点

213
8.10.3

测试案例

214
8.11

小结

219
第9章

使用HttpUnit进行功能测试

220
9.1

为什么要做功能测试

220
9.2

为什么要使用HttpUnit

221
9.3

HttpUnit基础

222
9.3.1

WebClient(客户端)功能介绍

222
9.3.2

响应检查和多页面处理

223
9.4

HttpUnit的高级话题

231
9.4.1

DOM检查

232
9.4.2

Header和Cookies

233
9.4.3

框架页面

233
9.4.4

SSL

234
9.4.5

HttpUnitOptions

234
9.4.6

技术局限性

234
9.5

蜘蛛范例程序

234
9.5.1

蜘蛛程序开发:第一个循环

235
9.5.2

蜘蛛程序开发:二次循环

236
9.5.3

蜘蛛工具将来的工作

240
9.6

小结

240
第10章

使用JMeter测试应用程序性能

241
10.1

概述

241
10.2

JMeter概述

242
10.3

JMeter概念

242
10.4

使用JMeter测试Web应用程序
浏览程序

244
10.5

使用JMeter测试Web应用程序
的表单条目

249
10.6

使用JMeter测试我们的RDBMS
的性能

255
10.7

案例学习:宠物商店

257
10.7.1

业务需求

257
10.7.2

建立测试

259
10.7.3

分析

262
10.7.4

结论

263
10.8

小结

263
第11章

使用JUnitPerf进行负载测试

264
11.1

概述

264
11.2

JUnitPerf概念

264
11.3

TimedTest范例

265
11.4

LoadTest范例

272
11.5

案例学习

273
11.5.1

HTTPUnit测试

273
11.5.2

JMeter配置

275
11.5.3

将它们放在一块

275
11.5.4

结论

278
11.6

小结

279
第三部分

API和标记参考
第12章

Ant标记参考

282
12.1

Ant命令行选项

282
12.2

Ant的父元素

283
12.2.1

project标记

283
12.2.2

target标记

283
12.2.3

path标记

284
12.2.4

filter标记

285
12.2.5

tstamp标记

285
12.3

Ant关键任务

286
12.3.1

Ant任务

286
12.3.2

antcall任务

286
12.3.3

available任务

287
12.3.4

echo任务

288
12.3.5

fail任务

288
12.3.6

property任务

288
12.3.7

taskdef任务

289
12.4

目录和文件系统任务

289
12.4.1

chmod任务

289
12.4.2

copy任务

290
12.4.3

delete任务

290
12.4.4

mkdir任务

291
12.4.5

move任务

291
12.4.6

touch任务

292
12.5

外部执行任务

292
12.5.1

apply任务

292
12.5.2

exec任务

293
12.5.3

execon任务

294
12.5.4

java

任务

295
12.5.5

javac任务

295
12.5.6

sql任务

296
12.6

文件库任务

298
12.6.1

jar任务

298
12.6.2

war任务

298
12.6.3

zip任务

299
12.6.4

unjar.

unzip和unwar任务

300
12.7

文件读写和控制

300
12.7.1

replace任务

300
12.7.2

mail任务

301
12.8

源代码控制任务

301
12.8.1

cvs任务

301
12.8.2

get任务

302
12.9

一些关键的可选任务

302
12.9.1

junit任务

302
12.9.2

junitReport任务

303
12.10

常用的嵌套参数和元素

304
12.10.1

classpath元素

304
12.10.2

mapper元素

305
12.10.3

fileset元素

306
12.10.4

patternset元素

306
12.10.5

zipfileset元素

306
第13章

Ant

API

参考

308
13.1

概述

308
13.2

org.apache.tools.ant包

309
13.2.1

AntClassLoader类

309
13.2.2

BuildEvent类

310
13.2.3

BuildException类

310
13.2.4

BuildListener接口

311
13.2.5

BuildLogger接口

312
13.2.6

DefaultLogger类

313
13.2.7

DesirableFilter类

314
13.2.8

DirectoryScanner类

314
13.2.9

FileScanner接口

316
13.2.10

IntrospectionHelper类

317
13.2.11

Location类

318
13.2.12

Main类

319
13.2.13

PathTokenizer类

319
13.2.14

Project类

319
13.2.15

ProjectHelper类

323
13.2.16

RuntimeConfigurable类

324
13.2.17

Target类

324
13.2.18

Task类

326
13.2.19

TaskAdapter类

327
13.2.20

UnknownElement类

328
13.2.21

XmlLogger类

328
13.3

小结

329
第14章

JUnit

API参考

331
14.1

junit.framework包

331
14.1.1

Assert类

331
14.1.2

Protectable接口

334
14.1.3

Test接口

335
14.1.4

TestCase类

335
14.1.5

TestListener接口

339
14.1.6

TestFailure类

339
14.1.7

TestResult类

340
14.1.8

TestSuite类

342
14.2

junit.extensions包

344
14.2.1

ActiveTestSuite类

344
14.2.2

ExceptionTestCase类

345
14.2.3

RepeatedTest类

346
14.2.4

TestDecorator类

347
14.2.5

TestSetup类

348
第15章

Cactus

API参考

350
15.1

概述

350
15.2

org.apache.cactus包

350
15.2.1

AbstractTestCase类

350
15.2.2

Cookie类

353
15.2.3

FilterTestCase类

357
15.2.4

JspTestCase类

358
15.2.5

ServiceDefinition类

359
15.2.6

ServiceEnumeration类

359
15.2.7

ServletTestCase类

359
15.2.8

ServletTestRequest类

不推荐

362
15.2.9

ServletURL类

363
15.2.10

WebRequest类

365
15.2.11

WebResponse类

367
15.2.12

WebTestResult类

368
15.3

org.apache.cactus.util包

369
15.3.1

AssertUtils类

不推荐

369
15.3.2

ClientCookie类

不推荐

370
15.4

org.apache.cactus.server包

371
15.4.1

FilterConfigWrapper类

371
15.4.2

HttpServletRequestWrapper类

372
15.4.3

PageContextWrapper类

373
15.4.4

RequestDispatcherWrapper类

373
15.4.5

ServletConfigWrapper类

373
15.4.6

ServletContextWrapper类

374
第16章

HttpUnit

API参考

375
16.1

概述

375
16.2

com.meterware.httpunit包

375
16.2.1

AuthorizationRequired-
Exception类

375
16.2.2

GetMethodWebRequest类

376
16.2.3

HTMLSegment接口

376
16.2.4

HttpException类

379
16.2.5

HttpInternalErrorException类

379
16.2.6

HttpNotFoundException类

380
16.2.7

HttpUnitOptions类

380
16.2.8

HttpUnitUtils类

381
16.2.9

IllegalRequestParameterException类

382
16.2.10

MessageBodyWebRequest类

383
16.2.11

PostMethodWebRequest类

383
16.2.12

PutMethodWebRequest类

384
16.2.13

SubmitButton类

385
16.2.14

TableCell类

385
16.2.15

WebClient类

386
16.2.16

WebConversation类

389
16.2.17

WebForm类

390
16.2.18

WebLink类

392
16.2.19

WebRequest类

393
16.2.20

WebResponse类

397
16.2.21

WebTable类

400
第17章

JUnitPerf

API参考

402
17.1

com.clarkware.junitperf包

402
17.1.1

ConstantTimer类

402
17.1.2

LoadTest类

402
17.1.3

RandomTimer类

406
17.1.4

ThreadBarrier类

406
17.1.5

ThreadedTest类

407
17.1.6

ThreadedTestGroup类

407
17.1.7

TimedTest类

408
17.1.8

Timer接口