《Java开放源码编程》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)Joe Walnes等著;甄山,甄镭译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2005
  • ISBN:712100514X
  • 页数:334 页
图书介绍:本书介绍了如何通过使用开放源码工具来构建一个现实的应用,以提高开发效率,降低企业开发费用。本书共分三个部分,使基本概念、使用工具和开发应用三个过程贯穿于读者的学习当中。特别是本书提及的开发者工具箱,包含了诸多的开放源码项目,它们都是与J2EE长期协同工作的结晶。而且,书中的实例使通过重新创作著名的Sun Java 蓝图——PetStore应用,将JUnit、Ant、Hibernate、WebWork、SiteMesh、XDoclet以及Lucene等工具的应用演绎得淋漓尽致,有利于读者在开发过程中提高可用性、结构简洁性和复用性的能力。本书适合于希望学习Java开放源码技术的程序员阅读。

第1部分 介绍 1

第1章 本书概述 2

1.1 使用开放源码技术 2

1.2 了解设计和开发理论 3

1.2.1 先测试 3

1.2.2 少即多 3

1.3 考察PetSoar项目 4

1.4 抓住基础 4

1.2.3 总是问傻问题 4

小结 5

第2章 应用概况 6

2.1 另一个宠物商店 6

2.2 了解可维护性的重要性 7

2.3 了解PetSoar的需求 7

2.4 检查结构和技术 8

2.4.1 查看结构 8

2.4.2 查看实用库 9

2.4.4 使用Web前端 10

2.4.3 使用存留和搜索 10

2.5 测式 11

小结 11

第2部分 建立开放源码工具箱 13

第3章 用JUnit进行单元测试 14

3.1 测试的类型 14

3.2 使用JUnit 15

3.2.1 JUnit的特征 15

3.2.2 写一个单元测试 15

3.2.3 运行一个单元测试 17

3.2.4 运行多个测试 18

3.2.5 你需要知道JUnit的一切 21

小结 28

第4章 用Mocks测试对象的交互作用 30

4.1 测试对象的交互作用 30

4.1.1 考察测试状态中的一些易犯错误 30

4.1.2 探索替换物:测试交互作用 31

4.2 使用模拟对象 32

4.2.1 实例场景 32

4.2.2 了解模拟对象的角色 34

4.2.3 了解模拟对象库 35

4.2.4 使用动态模拟 35

小结 39

第5章 用Hibernate存储对象 40

5.1 了解持久化的复杂性 40

5.2 用Hibernate 2持久化对象 41

5.2.1 创建持久类 41

5.2.2 映射类到数据库中 43

5.2.3 配置Hibernate 45

5.2.4 获得一个会话 47

5.2.5 在数据库中存储对象 49

5.2.6 从数据库中检索对象 51

5.2.7 查询对象 51

5.2.8 持久化对象间的联系 53

5.3 持久化层次结构对象 58

5.4 了解Hibernate工具箱 60

5.5 Hibernate同其他竞争技术的比较 60

5.5.1 Hibernate与EJB 60

5.5.2 Hibernate与JDO 61

小结 62

5.5.3 Hibernate与DAO框架 62

第6章 使用WebWork实现MVC模式 63

6.1 了解模型视图控制器 63

6.1.1 检查模型层 63

6.1.2 检查视图层 64

6.1.3 检查控制器层 64

6.1.4 把全部层联系在一起 64

6.1.5 考证使用MVC的理由 65

6.2.2 考察WebWork 66

6.2 了解MVC、WebWork和XWork 66

6.2.1 考察XWork 66

6.3 进一步了解活动 68

6.3.1 一个简单的XWork实例 68

6.3.2 配置XWork 69

6.3.3 构造活动(活动组成) 69

6.3.4 从XWork中调用一个活动 71

6.3.5 使用参数和ActionContext 72

6.4.1 了解XWork结果和活动链 73

6.4 应用物理学中的牛顿第三定律 73

6.4.2 考察WebWork结果和Servlet环境 74

6.4.3 配置WebWork 75

6.4.4 了解调度的角色 76

6.4.5 考察JSP和Velocity中的视图实例 77

6.4.6 基于组件的Web开发 80

6.5 表达你自己 84

6.5.1 使用基础表达式 85

6.5.2 使用高级表达式 86

6.5.3 了解ValueStack 87

6.6 考察类型转换 89

6.6.1 深入研究一个日期实例 89

6.6.2 指定默认转换规则 90

6.6.3 指定新的转换规则 90

6.7 采用截取器分离事务 91

6.7.1 配置截取器栈 91

6.7.2 使用记录截取器 92

6.8.1 考察一个没有使用XWork验证框架的实例 93

6.8 Validation——一个强大的截取器 93

6.7.3 构建自己的截取器 93

6.8.2 考察一个采用XWork验证框架的实例 94

6.8.3 使用内置的和用户自定义的验证 95

6.8.4 使用验证表达式 97

小结 97

第7章 用SiteMesh简化布局 98

7.1 识别布局的问题 98

7.2.1 装饰器设计模式 102

7.2 使用面向对象的解决方案 102

7.2.2 组合设计模式 104

7.2.3 结合模式 105

7.3 用SiteMesh实现解决方案 106

7.3.1 SiteMesh的基本原理 106

7.3.2 创建一个装饰器 106

7.3.3 组成网页 109

7.3.4 考察SiteMesh 112

7.4.1 将装饰器分组 115

7.4.2 不要惧怕引用 115

7.4 使用技巧 115

7.4.3 CSS是你的朋友 116

7.4.4 最小化HTML 116

7.4.5 分散关注点 116

小结 117

第8章 用Lucene添加搜索能力 118

8.1 了解搜索的复杂性 118

8.2.2 索引一个文件 119

8.2.1 了解Lucene的元素 119

8.2 Lucene简介 119

8.2.3 搜索文件 122

8.2.4 重新索引和删除一个已索引的文档 124

8.2.5 使用高级搜索 124

8.2.6 定制标志的进程 125

小结 126

第9章 用XDoclet生成配置文件 127

9.1 XDoclet简介 127

9.2 用XDoclet了解面向属性编程 127

9.2.1 了解属性的语法 129

9.2.2 运行XDoclet 130

9.2.3 用XDoclet应用高级的Hibernate或映射 133

9.2.4 使用XDoclet生成更复杂的工件 135

9.2.5 了解XDoclet任务和子任务 138

9.2.6 有效地使用XDoclet 139

小结 141

第10章 交流与工具 142

10.1 考察PetSoar开发 142

10.2.2 使用源码交流 144

10.2.1 用一切可能的方法交流 144

10.2 管理不完善的交流 144

10.2.3 使用交流作为学习的工具 146

10.3 考察工具箱 146

10.3.1 源代码配置管理——CVS 146

10.3.2 知识管理——WiKi 147

10.3.3 邮件目录——Majordomo 147

10.3.4 实时讨论——IRC和即时消息 147

10.3.5 IDEIDEA和Eclipse 147

10.4 使用连续集成 148

10.3.6 问题追踪和任务管理——JIRA 148

小结 149

10.5 把工具连接在一起 149

第11章 省时工具 151

11.1 了解实用组件 151

11.2 了解OSCache 152

11.2.1 介绍SampleNewscom 152

11.2.2 使用LOOP测试 152

11.2.3 考察OSCache标识符库 154

11.2.4 了解OSCache概念 155

11.2.5 缓存时间实例 156

11.2.6 查看高级的OSCache特征 157

11.3 了解Commons Lang 157

11.3.1 考察最有用的类 158

11.3.2 使用Builder类 158

11.4 了解Commons Collections 161

11.5.1 考察Commons Logging的优点 162

11.5.2 一个简单的实例 162

11.5 了解Commons Logging 162

11.6 了解Commons Digester 163

11.6.1 考察一个Digester实例 164

11.6.2 了解Digester规则 166

小结 167

第3部分 开发应用 169

第12章 建立开发环境 170

12.1 在IDE内工作 170

12.1.1 问题:IDE不是自动化的 171

12.2.1 问题:Ant不是万灵药 172

12.1.2 解决办法:自动构建工具 172

12.2 将Ant用于你全部的构建需要 172

12.2.2 解决办法:使用有意义的方法 173

12.3 使用杂交处理方法 173

12.4 组织你的项目 174

12.4.1 通过类型组织文件结构 175

12.4.2 通过部署组织文件结构 176

12.4.3 选择一个结构 177

12.4.4 PetSoar怎样 177

12.5.1 了解测试类型 178

12.5 管理单元测试 178

12.5.2 考察测试小组、JUnit和批量测试 179

12.6 使用版本控制 180

12.7 部署PetSoar 180

小结 182

第13章 了解测试驱动开发 183

13.1 为什么先测试 183

13.1.1 先测试与后测试 184

13.1.2 锁定需求 185

13.2.2 从不跳过失败的测试 186

13.2 了解测试技术 186

13.2.1 将单元测试与代码放在同一程序包中 186

13.2.3 使用模拟对象孤立无法测试部分 187

13.2.4 何时使用接口和类 187

13.2.5 保持简洁 187

13.2.6 自顶向下工作 188

13.2.7 使用许多小的对象 188

13.2.8 保证测试组快速运行 188

13.3.1 使用TDD的实例场景 189

13.2.9 避免静态和单件 189

13.3 测试TDD循环 189

13.3.2 实例场景重访 191

13.3.3 加强功能 192

小结 194

第14章 管理生命周期和组件依赖 195

14.1 了解组件和服务 195

14.2 处理依赖 195

14.2.1 使用直接实例化 195

14.2.2 使用工厂 196

14.2.3 使用注册 197

14.2.4 使用容器 197

14.3 了解组件生命周期 198

14.4 了解反转控制 198

14.4.1 考察优点 199

14.4.2 考察缺点 199

14.5 了解分离关注点(Separation of Concerns) 200

14.6 使用容器来定义范围 200

14.7.1 配置容器 201

14.7 使用XWork的容器 201

14.7.2 了解容器是如何工作的 202

14.8 测试XWork组件 203

小结 205

第15章 定义域模型 206

15.1 考虑域模型的优势 206

15.2 处理层 206

15.2.1 层驱动与特性驱动方法的比较 207

15.2.2 选择自底向上、自顶向下、中间分离 208

15.3 确定当前的目标 209

15.4 向店中添加一个宠物 209

15.4.1 使用Hibernate实现PersistenceManager 212

15.4.2 我们的进展 220

15.5 检索宠物 220

15.5.1 检索一个单一的宠物 223

15.5.2 我们的进展 226

15.6 持续分类目录 227

15.6.2 实现CategoryPet关联 230

15.6.1 我们的进展 230

15.6.3 我们的进展 234

15.7 考虑性能和可维护性 235

小结 236

第16章 创建基于Web的界面 237

16.1 添加一个宠物 237

16.1.1 创建AddPet活动 237

16.1.2 为AddPet创建视图 240

16.1.3 把全部连在一起试用 242

16.2.1 创建一个ViewPet活动 243

16.2 显示一个宠物 243

16.2.2 重构活动 246

16.3 编辑宠物 249

16.3.1 检查有效性 251

16.3.2 把全部连接在一起——第二次试用 251

16.4 把宠物从这里拿走 252

16.5 重构CRUD 256

16.5.1 消除在ViewPet和RemovePet中的重复 256

16.5.2 剩下的工作 258

16.5.3 完成最后一个重构 260

16.5.4 解耦验证 261

16.6 更换宠物 264

小结 266

第17章 定义导航、布局、视觉和感觉 267

17.1 组件化窗口组件表单 267

17.2 形成更美妙的视感和感觉 270

17.3 使用样式化风格 272

17.4 导航到更好的用户界面 275

小结 277

第18章 实现浏览和查询功能 278

18.1 定义应用需求 278

18.2 浏览分类列表 278

18.3 浏览宠物列表 280

18.4 搜索商店中的宠物 283

18.4.1 实现LuceneSearehcr 285

18.4.2 实现LuceneIndexer 288

18.4.3 进行到哪里了 296

18.4.4 查询任何类型的数据 296

18.4.5 进行到哪里了 303

18.4.6 实现全文检索 304

18.4.7 实现分页 305

18.5 把它组装起来 308

小结 310

第19章 增加购物车 311

19.1 创建购物车 311

19.2 创建WebWork活动 313

19.3 购物车结账 315

小结 325

第20章 保护应用 326

20.1 理解J2EE安全模型 326

20.2 简化安全 328

20.2.1 使用HTTP请求包装器 328

20.2.2 使用安全过滤器 329

20.2.3 使用登录过滤器 330

20.2.4 在保护下工作 331

20.3 使用更优雅的方法 332

小结 333