第一部分 Socket编程 3
第1章 了解分布式程序设计 3
1.1 概述 3
1.2 Internetwork概览 3
1.2.1 网络体系结构 3
1.2.2 协议 4
1.2.3 OSI参考模型 4
1.2.4 命名与路由 5
1.2.5 Internet地址 5
1.3.1 客户/服务器模式 6
1.3 分布式程序设计简介 6
1.3.2 基于对象模式 7
1.4 分布式程序设计技术 7
1.4.1 Socket 7
1.4.2 远程过程调用 7
1.4.3 分布式程序为什么好 8
1.4.4 分布式程序为什么是困难的 8
1.5 Java支持的分布式程序设计 9
1.6 移动网络 10
1.7 Java安全性概览 10
1.8 小结 12
2.1 内部通信方式 13
第2章 了解Socket编程 13
2.2 什么是Socket? 14
2.2.1 Socket类型 15
2.3 TCP/IP和UDP/IP通信 15
2.3.1 数据报通信协议 15
2.3.2 流通信协议 15
2.3.3 UDP与TCP 15
2.4 客户/服务器通信 16
2.5 使用Java进行Socket编程 16
2.5.1 数据流 17
2.5.2 TCP Socket 17
2.5.3 UDP Socket(数据报) 20
2.5.4 多点传送Socket 21
2.6 Creetings服务器实例 21
2.6.1 服务器程序 22
2.6.2 客户程序 24
2.6.3 错误? 25
2.7 解析Internet地址 25
2.7.1 例:GetName 26
2.7.2 例:GetIP 26
2.7.3 例:NsLookup 27
2.7.4 例:IPtoName 28
2.8 小结 29
3.1 对现有服务编写客户程序 30
3.1.1 SMTP客户程序 30
第3章 客户和服务器程序设计 30
3.1.2 finger客户程序 33
3.1.3 ping客户程序 35
3.2 使用线程进行编程 37
3.2.1 什么是线程? 37
3.2.2 线程的优点 38
3.2.3 示例:创建并运行线程 38
3.2.4 创建和启动线程 39
3.2.7 改变线程优先级 41
3.2.5 使线程睡眠 41
3.2.6 控制线程 41
3.2.8 同步 42
3.3 编写新的服务器和客户程序 43
3.3.1 示例:算术客户/服务器应用程序 44
3.4 小结 49
第4章 应用程序中的Socket 50
4.1 开发一个多线程HTTP服务器 50
4.2 HTTP的安全 54
4.3 代理服务器 55
4.4 通过Socket访问数据库 56
4.3.1 代理服务器如何工作 56
4.3.2 代理服务器的优点 56
4.5 解释JDBC 57
4.5.1 JDBC安全模式 58
4.5.2 JDBC DriverManager 58
4.5.3 剖析JDBC应用程序 59
4.5.4 Java对象的持久性存储器 61
4.6 小结 64
第5章 Socket高级编程 65
5.1 对象序列化 65
5.1.1 对象序列化与持久性 66
5.1.3 控制序列化 68
5.1.2 对象序列化的安全 68
5.1.4 序列化对象的版本 69
5.2 Socket对象 70
5.2.1 在线发送对象 70
5.3 数字签名报文 74
5.3.1 java.security包 74
5.3.2 数字签名 74
5.3.3 示例:通过Socket签名文件 74
5.4 小结 81
6.1 简介 82
6.2 基于Web的全局计算 82
第6章 实例分析:全局计算引擎 82
6.2.1 为什么需要全局计算 83
6.2.2 为什么需要基于Web的计算 83
6.2.3 需考虑的问题 83
6.3 为什么不用CGI 84
6.3.1 优点 84
6.3.2 缺点 84
6.4 客户/服务器模式 85
6.5 安全问题 85
6.6.1 类装载器 86
6.6 实现细节 86
6.6.2 安全策略 90
6.6.3 计算引擎 93
6.6.4 命令行客户程序 96
6.7 其它问题 97
6.7.1 搜索计算资源 97
6.7.2 代理程序 98
6.8 小结 98
第二部分 RMI 101
第7章 了解RMI 101
7.1 RMI简介 101
7.2 什么是RMI? 101
7.3 RMI的目标 102
7.4.1 桩/构架层 103
7.4.2 远程引用层 103
7.4 RMI体系结构 103
7.4.3 传输层 104
7.5 RMI如何工作 104
7.6 分布垃圾回收 104
7.7 RMI和OSI参考模型 105
7.8 安全 105
7.9 小结 106
第8章 从RMI开始 107
8.1 基于RMI应用程序的剖析 107
8.1.2 实现远程接口 108
8.1.1 定义远程接口 108
8.1.3 使用远程接口开发客户程序 111
8.1.4 产生桩和构架 112
8.1.5 自动RMI注册表 113
8.1.6 运行服务程序和客户程序 113
8.2 使用RMI注册表工作 114
8.2.1 从注册表中删除一个对象 114
8.2.2 重新绑定一个对象到注册表 115
8.3 RMI与Socket的比较 115
8.4 小结 116
9.1.1 定义一个远程接口 117
第9章 高级RMI编程 117
9.1 “城市信息”服务器 117
9.1.2 实现远程接口 118
9.1.3 开发一个客户程序 119
9.1.4 产生桩和构架 120
9.1.5 启动RMI注册表 120
9.1.6 运行服务器和客户程序 120
9.2 实现“工厂” 120
9.2.1 定义工厂接口 120
9.2.2 实现Gity2接口 121
9.2.3 实现CityFactory接口 122
9.2.4 调用工厂 123
9.3 实现回调 124
9.2.5 运行工厂 124
9.3.1 Java中的回调 125
9.3.2 在RMI中实现回调 125
9.4 通过RMI签名对象 129
9.4.1 java.security包 129
9.4.2 示例 129
9.5 小结 132
第10章 使用Java2进行RMI编程 134
10.1 创建定制的Socket类型 134
10.1.1 创建定制的Socket类型的步骤 134
10.2.2 减少更多的Socket类型 135
10.2 创建一个定制的RMISocketFactory 135
10.2.1 减少一人Socket类型 135
10.2.3 使用定制的RMISocketFactory 136
10.3 SSL Socket 137
10.4 远程对象激活 138
10.4.1 简介 138
10.4.2 激活协议 138
10.4.3 创建一个可激活的远程对象 139
10.5 版本控制 141
10.5.1 包的版本 141
10.5.2 产品版本与用户 143
10.6 小结 144
第三部分 CORBA 147
第11章 CORBA概述 147
11.1 了解CORBA 147
11.2 CORBA结构 147
11.2.1 对象请求代理 148
11.2.2 不同厂商和不同ORB 149
11.2.3 界面定义语言(IDL) 149
11.2.4 动态调用接口(DII) 149
11.4 对象服务 150
11.3 客户和对象实现 150
11.2.7 对象适配器(OA) 150
11.2.6 接口仓库(IR) 150
11.2.5 动态构架接口(DSI) 150
11.5 CORBA3.0的新特点 151
11.5.1 可移植对象适配器 151
11.5.2 CORBA通信(Messaging) 152
11.5.3 通过值传递对象 153
11.6 小结 153
第12章 开始使用CORBA 154
12.1 CORBA实现 154
12.2 基于CORBA应用程序的剖析 154
12.2.1 定义IDL接口 155
12.2.2 实现CORBA类 157
12.2.3 开发服务器程序 158
12.2.4 开发客户程序 159
12.2.5 启动smart agent,服务器和客户机 160
12.3 比较CORBA和RMI 160
12.4 小结 161
第13章 CORBA IDL:接口定义语言 162
13.1 IDL定义 162
13.1.1 注释 162
13.1.2 标识符 162
13.2 IDL接口 163
13.1.3 字面量 163
13.3 模块声明 164
13.4 属性声明 164
13.5 类型声明 165
13.5.1 基本类型 165
13.5.2 构造类型 165
13.5.3 模板类型 166
13.6 数组 166
13.8 常量声明 167
13.9 异常声明 167
13.7 typedef声明 167
13.6.1 数列和序列 167
13.10 操作声明 168
13.10.1 参数声明 168
13.10.2 非等待操作 168
13.10.3 raises表达 168
13.11 预处理 169
13.12 关键字 169
13.13 小结 169
第14章 IDL到Java的映射 171
14.1 名称 171
14.2 模块 171
14.3 Holder类 172
14.5 基本类型 174
14.4.2 不在接口内的常量 174
14.4 常量 174
14.4.1 在接口内的常量 174
14.5.1 布尔型 175
14.5.2 字符型 175
14.5.3 八进制型 175
14.5.4 字符串 176
14.5.5 整型 176
14.5.6 浮点型 177
14.6 构造类型 177
14.6.1 enum 177
14.6.2 结构 178
14.6.3 联合 179
14.6.4 序列 180
14.6.5 数列 181
14.7 异常 181
14.7.1 用户定义异常 182
14.7.2 系统异常 182
14.8 接口 182
14.8.1 参数传送模式 183
14.9 typedef映射 184
14.9.1 简单IDL类型 184
14.9.2 复杂IDL类型 184
14.10 小结 185
15.1 一个银行应用程序 186
15.1.1 在IDL中定义接口 186
第15章 命名和绑定 186
15.1.2 实现CORBA类 187
15.1.3 开发服务器程序 189
15.1.4 开发客户程序 190
15.1.5 运行应用程序 191
15.2 命名对象 191
15.3 绑定对象 192
15.3.1 绑定功能 192
15.3.4 对于对象引用的操作 193
15.3.2 指定绑定选项 193
15.3.3 本地对远程对象定位 193
15.3.5 缩小对象引用 194
15.4 小结 194
第16章 注册和激活对象 195
16.1 基本对象适配器 195
16.2 对象激活模式 195
16.3 对象引用 196
16.3.1 暂态对象引用 196
16.3.2 永久对象引用 196
16.5 实现仓库 197
16.4 注册对象 197
16.6 小结 198
第17章 继承和约束机理 200
17.1 接口继承 200
17.1.1 示例 200
17.2 约束机理 201
17.2.1 示例 201
17.2.2 修改Server类 201
17.2.3 修改Aeeountimpl类 202
17.2.4 修改Managerlmpl类 202
17.3 小结 203
18.1 动态调用接口 204
第18章 动态调用/构架接口 204
18.1.1 使用DII 205
18.1.2 请求参数 206
18.2 动态构架接口 206
18.2.1 使用DSI 206
18.3 接口仓库 207
18.3.1 创建一个接口仓库 208
18.4 小结 208
第19章 Caffeine 209
19.1 Caffeine概述 209
19.2 使用java2iiop编译器 209
19.3.1 定义接口 210
19.3 剖析一个Caffeine基的应用程序 210
19.3.2 编写一个服务器对象 211
19.3.3 编译服务器 212
19.3.4 编写客户机代码 212
19.3.5 编译客户机代码 213
19.3.6 运行服务器 213
19.3.7 运行客户机 213
19.4 数据类型映射 213
19.5 小结 214
第20章 移动软件代理概述 217
20.1 软件代理介绍 217
第四部分 移动代理和Voyager 217
20.2 移动软件代理 218
20.3 一个新的分布计算范例 218
20.4 移动代理应用程序 218
20.5 移动代理的安全 219
20.6 移动代理实现 220
20.6.1 General Magic s Odysses 220
20.6.2 IBM Japan的Aglet 220
20.6.3 ObjecfSpace公司的Voyager ORB 221
20.7 小结 221
21.1 概述 222
第21章 开始使用Voyager 222
21.2.1 启动和终止Voyager程序 223
21.2 Voyager的使用 223
21.2.2 记录控制台信息 224
21.2.3 远程接口 224
21.2.4 创建远程对象 225
21.2.5 剖析一个Voyager应用程序 226
21.2.6 命名服务和代理 228
21.3 小结 231
第22章 移动代理编程 232
22.1 动态集合 232
22.1.2 Facet创建和远程访问 233
22.1.1 使用facet 233
22.2 移动性 236
22.2.1 移动对象 237
22.2.2 移动性和消息 238
22.2.3 得到通知 239
22.3 移动代理 241
22.3.1 使用移动代理 241
22.3.2 开发移动代理 242
22.4 小结 246
23.1.1 安装安全管理器 247
23.1 安全 247
第23章 高级Voyager编程 247
23.2 高级消息 248
23.3 发布和订阅 249
23.4 激活 250
23.4.1 编写一个激活器 250
23.5 计时器 251
23.6 小结 251
24.1.1 导入和导出CORBA对象 253
24.2 剖析Voyager CORBA应用程序 253
24.1 Voyager CORBA编程 253
第24章 Voyager和CORBA集成 253
24.2.1 开发接口 254
24.2.2 实现接口 254
24.2.3 开发服务器程序 254
24.2.4 开发客户机程序 255
24.2.5 编译和运行应用程序 256
24.3 Voyager CORBA集成 257
24.3.1 Voyager客户机和CORBA服务器 257
24.3.2 Voyager服务器和CORBA客户机 260
24.4 小结 262
参考文献 263
在线参考 264