前言 1
关于作者 1
第一部分分布式对象编程 1
第1章计算机互连编程原理 1
1.1计算机连接简史 1
目 录 1
1.2 TCP/IP和Java 3
1.2.1 TCP/IP工作原理 3
1.2.2应用层 5
1.2.4网络层 6
1.2.5网络访问层 6
1.2.3传输层 6
1.3理解现代互连技术 10
1.3.1 Java数据库连接性(JDBC) 11
1.3.2TCP/IP 11
1.3.3 servlet 11
1.3.4远程方法调用(RMl) 12
1.3.5 Java命名和目录接口(JNDI) 12
1.3.6 JavaMail 12
1.3.7 Java消息服务(JMS) 13
1.3.8 Enterprise JavaBean(EJB) 13
1.3.9消息驱动的bean(MDB) 13
1.4旅行票据应用程序的设计 14
1.3.10 XML 14
1.3.11 Web服务 14
1.5小结 15
第2章使用RMI创建应用程序 16
2.1理解RMI 16
2.1.1 RMI特性 17
2.1.2 RMI与CORBA的比较 17
2.1.3 RMI的内部机理 18
2.1.4支持程序 18
2.1.5创建RMI应用程序 19
2.2将应用程序转换为RMI 25
2.1.6运行示例程序 25
23创建CruiseList应用程序的RMI版本 37
2.4小结 54
第3章使用JAXP创建应用程序 55
3.1理解XML1 55
3.2 XML相关工具 56
3.3创建XML文档 57
3.4创建文档类型定义(DTD) 59
3.5使用SimpleAPI for XML(SAX) 61
进行分析 61
3.6使用文档对象模型(DOM)进行分析 66
3.7 CruiseList应用程序的XML版本 72
3.8小结 92
第4章使用JSP和servlet进行应用 93
程序开发 93
4.1 HTTP基础 93
4.2第一个JSP页面 94
4.3JSP标记类型 98
4.3.1指令 98
4.3.2声明 99
4.3.3表达式 100
4.3.4 JSP小脚本 100
4.4使用JSP处理表单 101
4.5第一个servlet 105
4.6何时使用JSP,何时使用servlet 108
4.7综合使用JSP和servlet 109
4.8小结 128
第二部分企业级Java 129
第5章Enterprise JavaBean(EJB) 129
5.1理解EJB方式 130
5.1.1 EJB的长处 131
5.1.2 EJB的弱点 131
5.1.3编写简单的EJB 132
5.2 EJB内部原理 139
5.2.1 EJB体系结构 139
5.2.2实例缓存 140
5.2.3部署说明文件概述 141
5.2.4 EJB的类型 141
5.3使用EJB开发旅行订票应用程序 143
5.4开发无状态会话bean 144
5.4.1使用无状态会话bean进行 144
实例缓存 144
5.4.2无状态会话bean的状态图 144
5.4.3无状态bean中的回调方法 145
5.4.4为旅行订票应用程序编写 145
无状态bean 145
5.5开发有状态会话bean 151
〈METHOD〉方法 151
5.4.5无状态会话bean中的create 151
5.5.1有状态会话bean的状态图 152
5.5.2 SessionSynchronization接口 152
5.5.3有状态bean中的回调方法 152
5.6开发实体bean 153
5.6.1实体bean中的持久化模型 153
5.6.2实体bean的状态图 154
5.6.3实体bean中的回调方法 154
5.6.4为旅行订票应用程序编写 154
实体bean 154
5.6.6 EJB查询语言 162
5.6.5实体bean中的create〈METHOD〉方法 162
5.6.8 ejbSelect〈METHOD〉方法 163
5.6.9 ejbHome〈METHOD〉方法 163
5.6.10 CMP字段 163
5.6.7 find〈METHOD〉方法 163
5.6.11 CMR字段 164
5.6.12主键 164
5.7建立并且运行旅行订票应用程序 165
5.8 EJB容器服务 166
5.8.1 EJB中的声明式安全 166
5.8.2 EJB中的声明式事务 167
5.9小结 169
5.8.3 EJB环境 169
第6章消息驱动bean(MDB) 171
6.1理解消息驱动的bean(MDB) 172
6.2开发和部署MDB 173
6.2.1编写MDB Java文件 173
6.2.2手工创建部署说明文件 173
6.2.3部署消息驱动的bean 175
6.2.4编写简单的MDB 176
6.3 MDB的工作原理 183
6.4点对点模型 184
6.5创建基于GUI的应用程序 192
6.6在MDB中处理错误 211
6.7小结 212
第7章Java消息服务(JMS) 213
7.1理解JMS 214
7.2使用JMS建立旅行票据系统 214
7.2.1用户界面编程 215
7.2.2使用JMS建立票据代理应用程序 227
7.2.3集成测试 236
7.3发布/预订模型 236
7.4小结 246
第8章选择正确技术的方法 247
8.1选择技术的挑战 247
8.2.1成本 248
8.2衡量软件特征 248
8.2.2风险 249
8.2.3可维护性 249
8.2.4可靠性 249
8.2.5可伸缩性 249
8.2.6互操作性 250
8.2.7简单性 250
8.2.8可扩展性 250
8.2.9可检验性 250
8.2.10人员的情况 250
(JDBC) 251
8.3.1 Java和Java数据库连接性 251
8.2.1 1学习的难度 251
8.3评估分布式技术 251
8.3.2 TCP/IP编程(套接字) 252
8.3.3 servlet 253
8.3.4远程方法调用(RMI) 254
8.3.5 Java命名和目录接口(JNDI) 254
8.3.6 JavaMail 256
8.3.7 Java消息服务(JMS) 256
8.3.8消息驱动bean(MDB) 257
8.3.9 Enterprise JavaBean(EJB) 258
8.4对比Java技术与CORBA 259
8.3.10 web服务 259
8.5小结 260
第三部分Java集成技术 261
第9章Web服务 261
9.1理解web服务方式 262
9.1.1什么是web服务 262
9.1.2 web服务的长处 263
9.1.3 web服务的弱点 264
9.1.4创建一个简单的Web服务 265
9.2理解SOAP 271
9.3创建一个付款Web服务 274
9.3.1 SOAP错误消息 278
9.3.2 SOAP数据类型 280
9.4理解WSDL 281
9.5理解UDDI 284
9.5.1 UDDI数据结构 284
9.5.2 UDDI API 285
9.6与.NET进行集成 286
9.7小结 288
第10章JDBC和数据库 290
10.1为什么需要JDBC 290
10.2 JDBC的工作原理 291
10.3批处理 293
10.4 JDBC与WebLogic Server 298
10.5 JDBC事务管理 304
10.6 JDBC 3.0中的改进 316
10.7小结 317
第11章Java命名和目录接口(JNDI) 318
11.1为什么需要命名服务API 319
11.2理解JNDI 319
11.3命名服务的工作原理 320
11.4寻找JNDI提供者 322
11.4.1默认寻找 322
11.4.3创建JNDI属性文件 324
11.4.4传递属性对象 324
11.4.2在命令行上传递属性 324
11.4.5创建Hashtable 326
11.5 JNDI与WebLogic Server 328
11.5.1绑定、取消绑定和重新绑定 330
11.5.2复杂对象 332
11.6使用JNDI时的注意事项 340
11.7小结 340
第12章使用Java处理语音 341
12.1理解Java Speech 341
12.2创建和分配语音引擎 343
12.2.1引擎状态 345
12.2.2分配线程 348
12.3语音合成 350
12.4语音识别 358
12.5小结 362
第13章JavaMail 363
13.1理解JavaMail 363
13.1.1 Session类 364
13.1.2 Message类 364
13.2 JavaMail的工作原理 364
13.3创建简单的SMTP应用程序 366
13.4创建基于JavaMail的CruiseList应用程序 374
13.5获取特定的电子邮件消息 397
13.6编写事件驱动的电子邮件应用程序 402
13.7小结 407
第14章串行端口通信 408
14.1理解RS-232标准 408
14.1.1 RS-232硬件 409
14.1.2通信软件 410
14.2 Java Communications API 411
14.3通过串行端口发送数据 419
14.4小结 425
第15章使用Java 2D进行绘制 427
15.1 理解Java 2D 427
第四部分Java媒体技术 427
15.2在屏幕上绘制文本 428
15.3绘制图形 433
15.4操作图像 437
15.5混合使用文本、图形和图像 443
15.6小结 445
第16章Java 3D图形 447
16.1理解三维(3D)编程 447
16.2 Java 3D API中的主要对象 449
16.3在Java 3D应用程序中添加运动 453
16.4在Java 3D程序中添加光线 454
16.5在Java 3D中添加纹理映射 460
16.6小结 465
第17章Java媒体框架(JMF)和Java 466
Advanced Imaging(JAI)API 466
17.1理解基于时间的媒体 466
17.2使用JMF对基于时间的媒体 468
进行解码 468
17.2.1添加控制面板 473
17.2.2 JMF中的其他功能 478
17.3使用Advanced Imaging API进行程序设计 478
17.4小结 482
第18章使用Java处理声音 484
18.1取样声音的原理 484
18.2 MIDI声音的原理 485
18.3 Java Sound API 486
18.4使用Java播放声音 488
18.5使用Java捕捉声音 498
18.6小结 510
第五部分设计Java类的最佳方式 511
第19章JavaBean和Java事件模型 511
19.1理解JavaBean 512
19.2使用Java事件模型进行程序设计 512
19.3开发简单的JavaBean 517
19.4方法、事件和属性 527
19.4.1方法 527
19.4.3绑定属性和受限属性 529
19.4.2事件 529
19.5小结 534
第20章体系结构模型和框架 535
20.1为什么需要框架 535
20.2什么是框架 536
20.3 MVC模式概述 540
20.4 Jakarta Struts框架中的MVC实现 542
20.4.1在Struts中创建控制器 544
20.4.2在Struts中创建视图 547
20.4.3在Struts中创建模型 552
20.4.4运行登录应用程序 552
20.5小结 553
第21章 Java设计模式 554
21.1为什么需要模式 554
21.2 Java模式 555
21.2.1单实例 555
21.2.2枚举 557
21.2.3工厂 560
21.2.4观察者 563
21.2.5代理 567
21.2.6外观 571
21.3 EJB设计模式 573
21.3.1 业务委托 573
21.3.2命令 578
21.4小结 582
第22章异常和调试 583
22.1异常处理的重要性 583
22.2理解Java异常策略 585
22.3在Java程序中捕获异常 585
22.4常见的异常处理方式 593
22.5处理异常的正确方式 595
22.6转换异常 598
22.7传递异常而不损失信息 600
22.8 JDK 1.4中的异常传递 610
22.9小结 618
第23章Java安全 619
23.1 Java安全概述 619
23.1.1应用程序安全综述 619
23.1.2安全威胁 620
23.1.3 Java中 的安全机制 620
23.1.4 Java Authentication and AuthorizationService综述 621
23.1.5 Java Cryptography Extension综述 621
23.2 Java沙箱模型 622
23.2.1 Java沙箱体系结构 622
23.2.2使用Java权限 623
23.2.3为Java沙箱编写自己的权限 626
23.3.1 SSL综述 629
23.3 Java安全套接字 629
23.3.2加密综述 630
23.3.3使用JSSE的客户/服务器 630
23.4小结 636
第24章Java多线程应用程序 637
24.1线程概述 637
24.1.1线程的生存周期 638
24.1.2创建线程 639
24.2控制线程 640
24.2.1启动线程 640
24.2.2使线程睡眠 641
24.2.3中断线程 642
24.2.4停止线程 644
24.3创建线程安全的应用程序 644
24.3.1多线程应用程序中最常见的 644
问题 644
24.3.2临界区 646
24.3.3让线程等待 648
24.3.4结合线程 651
24.4线程管理 651
24.4.1线程组 651
24.4.2线程的优先级 654
24.5小结 654
25.1国际化的基本原理 656
第25章Java国际化 656
25.2为文本使用资源束 657
25.3使用ResourceBundle类存储对象 666
25.4国际化日期和时间 670
25.5国际化数值和货币值 673
25.6小结 678
第26章持久化和克隆 679
26.1对象串行化 679
26.1.1自动串行化 680
26.1.2 transient关键字 688
26.1.3带版本的串行化 689
26.1.4定制的串行化 691
26.1.5串行化内部原理 693
26.2对象外表化 694
26.3克隆 697
26.3.1创建深度副本 703
26.3.2使用串行化进行克隆 705
26.3.3 AutoCloner与性能 708
26.4安全与串行化 708
26.5小结 714
第27章多态性和继承 715
27.1多态性和继承的重要性 715
27.2多态性的内部原理 716
27.3多态性编程 717
27.4继承、构成或强力 722
27.5继承和多态性的缺点 725
27.6具体或抽象基类 726
27.7类型安全的向下类型转换与继承 727
27.7.1 instanceof解决方案 729
27.7.2 Object.getClass()解决方案 729
27.7.3 Class.forName()解决方案 730
27.8用运行时类型识别进行多态性编程 732
27.9用反射进行多态性编程 735
27.10继承与句柄 737
27.11小结 738
28.1理解包 739
第28章代码的组织和部署 739
28.2 JAR文件 741
28.2.1内容清单文件 744
28.2.2运行JAR文件中的代码 744
28.2.3扩展 745
28.3Java API Documentation Generator 746
28.4小结 756
第六部分附 录 757
附录A本书使用的实用程序源代码 757
清单 757
附录B下载和安装WebLogic Server 774