第一部分 像Java开发人员一样思考第1章 关键的Java语言特性和库 3
1.1 介绍Derby 3
1.2 使用Derby 3
1.3 添加到Java 5中的语言特性 7
1.3.1 泛型 7
1.3.2 增强的for循环 16
1.3.3 Java类库的增强 17
1.3.4 可变参数 18
1.3.5 装箱/拆箱转换 20
1.3.6 静态导入 22
1.3.7 枚举 24
1.3.8 元数据 26
1.4 重要的Java实用程序库 35
1.4.1 Java日志 35
1.4.2 Java首选项 67
1.5 小结 74
第2章 用于开发Java解决方案的各种工具和技术 76
2.1 高质量软件开发的原则 76
2.2 进行高效软件开发的习惯 77
2.2.1 交流 77
2.2.2 模型 78
2.2.3 敏捷 78
2.2.4 条理 79
2.2.5 根据需要追溯行为 79
2.2.6 不要害怕编写代码 79
2.2.7 将代码当作设计而非产品 80
2.2.8 不断学习 80
2.2.9 自下而上构建流程 80
2.2.10 配置管理 81
2.2.11 单元测试代码 81
2.2.12 持续集成 81
2.2.13 维护短期迭代 82
2.2.14 度量成果——间接度量 83
2.2.15 追踪问题 84
2.3 开发方法 84
2.3.1 瀑布方法 84
2.3.2 统一流程 85
2.3.3 极限编程 87
2.3.4 关于方法的评价 87
2.4 实际开发场景 88
2.4.1 Ant 89
2.4.2 Maven 2 97
2.4.3 原型 98
2.4.4 递移依赖关系 98
2.4.5 TestNG 103
2.4.6 XDoclet 107
2.4.7 JMeter 114
2.5 小结 117
第3章 Java开发模式 118
3.1 模式为什么重要 119
3.1.1 理解Java编程语言的关键 119
3.1.2 理解Java开发中所使用工具的关键 120
3.1.3 开发有效Java解决方案的关键 120
3.2 基于设计原则构建模式 121
3.2.1 设计单个类 122
3.2.2 在类之间创建关联 122
3.2.3 创建接口 123
3.2.4 创建继承循环 124
3.3 重要的Java模式 125
3.3.1 适配器 125
3.3.2 模型-视图-控制器 128
3.3.3 命令 136
3.3.4 策略 141
3.3.5 组合 146
3.4 小结 149
第二部分 对Java API、工具和技术的广泛理解第4章 使用JFC开发高效的用户界面 153
4.1 布局管理器 154
4.1.1 BorderLayout 154
4.1.2 BoxLayout 161
4.1.3 FlowLayout 169
4.1.4 GridLayout 174
4.1.5 GridBagLayout 186
4.1.6 SpringLayout 191
4.1.7 CardLayout 200
4.1.8 GroupLayout 205
4.2 Mustang版本桌面增强 213
4.3 管理Swing应用程序中的导航流 224
4.4 小结 234
第5章 使用文件持久保存应用程序 235
5.1 应用程序数据 235
5.1.1 保存应用程序数据 237
5.1.2 应用程序的示例配置数据模型 237
5.2 Java Serialization:持久保存对象图 239
5.2.1 关键类 240
5.2.2 序列化对象 240
5.2.3 扩展和自定义序列化 254
5.2.4 使用Java Serialization的时机 258
5.3 JavaBean长期序列化:XMLEncoder/Decoder 259
5.3.1 设计差异 259
5.3.2 序列化JavaBean 262
5.3.3 使用XMLEncoder/Decoder的时机 267
5.4 灵活的XML序列化:用于XML绑定的Java API(JAXB) 267
5.4.1 用于配置对象的样例XML文档 269
5.4.2 使用XML模式定义XML格式 270
5.4.3 JAXB API关键类 278
5.4.4 编组和解组XML数据 278
5.4.5 使用JAXB生成的类创建新的XML内容 280
5.4.6 在应用程序中使用JAXB生成的类 281
5.4.7 为使用JAXB注释现有Java类 287
5.4.8 使用JAXB的时机 306
5.4.9 JDK中JAXB的用途 306
5.5 小结 307
第6章 使用数据库持久保存应用程序 308
6.1 JDBC API概述 308
6.2 设置环境 309
6.3 JDBC API的用法 310
6.3.1 理解两层模型 310
6.3.2 理解三层模型 310
6.4 有效使用JDBC 4.0 311
6.4.1 概述 312
6.4.2 管理连接 312
6.4.3 理解语句 314
6.4.4 使用结果集 324
6.4.5 高级概念 328
6.5 Hibernate 331
6.5.1 Hibernate组件 332
6.5.2 Hibernate示例 336
6.6 小结 349
第7章 使用模型1体系结构开发Web应用程序 350
7.1 模型1及其使用原因 350
7.1.1 JSP 2.0概述 352
7.1.2 集成表达式语言 360
7.1.3 JSTL 1.1概述 362
7.1.4 使用JSTL 1.1开发Web应用程序的可视化 365
7.1.5 使用JSP 2.0开发Web应用程序的可视化 370
7.1.6 AJAX 376
7.2 小结 387
第8章 使用模型2体系结构开发Web应用程序 388
8.1 问题 388
8.2 模型2 388
8.3 为什么使用模型2 390
8.4 使用WebWork开发一个应用程序 391
8.4.1 控制反转及其作用 391
8.4.2 体系结构 393
8.4.3 扩展框架来支持Hibernate 396
8.4.4 防止会话中止 397
8.4.5 定义域模型 400
8.4.6 实现带有行为的使用事例 407
8.4.7 开发视图 411
8.4.8 配置应用程序 417
8.4.9 适应变化 420
8.5 小结 422
第9章 使用Java本机接口与C/C++交互 423
9.1 初识Java本机接口 423
9.1.1 创建Java代码 423
9.1.2 创建本机代码和库 424
9.1.3 执行代码 426
9.2 Java本机接口 427
9.2.1 数据类型 427
9.2.2 JNI中的字符串 427
9.2.3 JNI中的数组 431
9.2.4 C/C++中使用Java对象 437
9.2.5 处理本机代码中的Java异常 444
9.2.6 本机代码中的对象引用 446
9.2.7 使用JNI进行高级编程 450
9.3 开发电子邮件客户端 455
9.3.1 系统设计 455
9.3.2 用户界面 456
9.4 小结 467
第10章 EJB 3和Java持久性API 468
10.1 新功能 469
10.2 Java持久性API(JPA) 469
10.2.1 实体 469
10.2.2 查询语言 470
10.2.3 实体管理器 470
10.2.4 什么是会话Bean?什么是实体Bean的消亡? 475
10.2.5 拦截器 476
10.2.6 EJB 3和Java持久性API Web组件示例 480
10.3 小结 515
第11章 在Java组件和其他平台的组件之间通信 516
11.1 组件通信场景 517
11.1.1 新闻阅读器:自动Web浏览 517
11.1.2 银行应用程序:一个EJB/JavaEE客户端 517
11.1.3 门户:集成异构数据源和服务 517
11.2 进程间通信和基本网络体系结构概述 517
11.3 套接字 519
11.3.1 Java Socket API 519
11.3.2 实现协议 527
11.4 远程方法调用 539
11.5 公共对象请求代理体系结构 544
11.5.1 CORBA基础 544
11.5.2 RMI-IIOP:使RMI与CORBA兼容 548
11.5.3 如何将RMI对象转换成RMI-IIOP对象 548
11.5.4 何时使用CORBA 550
11.5.5 分布式文件系统通知:一个CORBA系统示例 551
11.6 Web服务 560
11.6.1 Random-Weather.org 561
11.6.2 与平台无关的RPC 563
11.7 小结 595
第12章 面向服务的集成 596
12.1 面向服务的架构 596
12.2 可用的技术 597
12.3 Java管理扩展 597
12.3.1 JMX为什么重要 597
12.3.2 JMX体系结构 597
12.3.3 创建和管理标准的MBean 598
12.3.4 JMX管理 602
12.4 Java通信服务 607
12.4.1 JMS为什么重要 607
12.4.2 端点:队列和主题 607
12.4.3 发送以及接收消息 608
12.5 系统集成模式 616
12.5.1 处理链 616
12.5.2 请求-回复 616
12.5.3 拆分-聚集 618
12.6 小结 620
第13章 Java安全性 621
13.1 Java密码系统体系结构和Java密码系统扩展(JCA/JCE) 621
13.1.1 JCA设计和体系结构 621
13.1.2 Java密码系统扩展 652
13.2 使用JAAS进行安全性编程 663
13.2.1 用户识别 664
13.2.2 对代码执行安全性检查 664
13.2.3 授权 668
13.3 小结 669
第14章 打包和部署Java应用程序 670
14.1 Java CLASSPATH探讨 670
14.2 调查已核准目录 675
14.3 Java存档探讨 676
14.4 处理JAR文件 677
14.4.1 基本声明文件探讨 679
14.4.2 applet和JAR探讨 680
14.4.3 签名JAR文件 681
14.4.4 JAR索引选项探讨 685
14.4.5 创建可执行JAR 686
14.5 applet分析 687
14.5.1 applet的基本剖析 687
14.5.2 applet打包执行 688
14.5.3 applet安全性探讨 689
14.6 Web应用程序探讨 689
14.6.1 WAR目录结构探讨 690
14.6.2 理解WAR部署描述符 691
14.7 打包企业JavaBeans 693
14.8 企业级存档探讨 694
14.8.1 EAR描述符文件 694
14.8.2 部署场景 695
14.9 进入Java Web Start 696
14.9.1 TicTacToe示例探讨 697
14.9.2 Java Web Start小结 704
14.10 使用Ant进行Web存档 704
14.10.1 安装Ant 705
14.10.2 使用Ant构建工程 705
14.11 小结 709