本书详细深入地介绍了P2P技术的基本概念、开发技术和应用实例。\r\n\r\n 全书分为4个部分23章。第一部分为前4章,简单介绍了P2P的基本概念、其Java开发平台的特性、P2P应用程序的类型以及相关产品。第二部分包括第5到10章,介绍了P2P系统的各个组成部分以及P2P应用程序的体系结构。第三部分是第11到17章,详细地阐述了使用Java开发P2P分布式系统的知识。最后5章是第四部分,介绍了5个具体的应用程序实例。本书附录介绍了J2EE的基本知识,有助于读者更好地了解开发平台。\r\n\r\n 本书适合Java专业程序员阅读,也可供准备学习和了解P2P计算技术的读者阅读参考。 \r\n
\r\n
第一部分 P2P简介 \r\n\r\n 第1章 P2P的基本概念 3 \r\n\r\n 1.1 P2P发展简史 3 \r\n\r\n 1.2 P2P应用程序的用武之地 5 \r\n\r\n 1.3 采用P2P的目的 5 \r\n\r\n 1.3.1 分散化 6 \r\n\r\n 1.3.2 费用和有效的资源分配 7 \r\n\r\n 1.3.3 普及应用的计算和边缘服务 7 \r\n\r\n 1.4 商业和实现方面的考虑 7 \r\n\r\n 1.5 P2P体系结构 8 \r\n\r\n 1.5.1 P2P如何形成动态网络 10 \r\n\r\n 1.5.2 节点自制 13 \r\n\r\n 1.5.3 支持混合模型 14 \r\n\r\n 1.6 JXTA和XML 17 \r\n\r\n 1.7 未来包含Web服务的P2P技术 18 \r\n\r\n 总结 19 \r\n\r\n 第2章 基于Java平台的P2P解决方案 20 \r\n\r\n 2.1 Java的优势 20 \r\n\r\n 2.1.1 平台独立性 20 \r\n\r\n 2.1.2 Java的分布式特性 21 \r\n\r\n 2.1.3 RMI 21 \r\n\r\n 2.1.4 支持多线程 21 \r\n\r\n 2.1.5 语言可靠性和成熟性 22 \r\n\r\n 2.1.6 安全性 22 \r\n\r\n 2.1.7 Java虚拟机 22 \r\n\r\n 2.2 Java平台的特别优势 26 \r\n\r\n 2.2.1 J2SE 26 \r\n\r\n 2.2.2 J2EE 32 \r\n\r\n 2.2.3 J2ME 33 \r\n\r\n 2.2.4 XML 36 \r\n\r\n 2.2.5 JAX包 36 \r\n\r\n 2.3 对等性和独立性的优势 39 \r\n\r\n 总结 39 \r\n\r\n 第3章 P2P应用程序的类型 40 \r\n\r\n 3.1 实时消息传输 40 \r\n\r\n 3.1.1 技术 42 \r\n\r\n 3.1.2 产品 44 \r\n\r\n 3.2 管理和共享信息 47 \r\n\r\n 3.2.1 技术 48 \r\n\r\n 3.2.2 产品 50 \r\n\r\n 3.3 协作 52 \r\n\r\n 3.3.1 技术 52 \r\n\r\n 3.3.2 产品 53 \r\n\r\n 3.4 分布式服务 54 \r\n\r\n 3.4.1 技术 54 \r\n\r\n 3.4.2 分布式网络产品 56 \r\n\r\n 总结 57 \r\n\r\n 第4章 作为分布式计算环境框架的P2P 58 \r\n\r\n 4.1 P2P系统的通用功能和特性 58 \r\n\r\n 4.1.1 动态网络 58 \r\n\r\n 4.1.2 节点的对等性和自治性 58 \r\n\r\n 4.2 P2P系统与传统系统之间的比较 59 \r\n\r\n 4.2.1 Usenet News 和 NNTP(网络新闻传输协议) 59 \r\n\r\n 4.2.2 Email(电子邮件系统) 60 \r\n\r\n 4.2.3 域名服务 61 \r\n\r\n 4.3 Web服务概述 62 \r\n\r\n 4.3.1 Web服务的定义 62 \r\n\r\n 4.3.2 P2P的可用性 64 \r\n\r\n 4.4 Jini和JavaSpaces概述 64 \r\n\r\n 4.4.1 Jini的定义 64 \r\n\r\n 4.4.2 JavaSpace定义 65 \r\n\r\n 4.4.3 设备和服务 66 \r\n\r\n 4.4.4 P2P的可用性 66 \r\n\r\n 4.5 JXTA概述 67 \r\n\r\n 4.5.1 JXTA的定义 67 \r\n\r\n 4.5.2 标准化P2P协议 69 \r\n\r\n 总结 69 \r\n\r\n 第二部分 P2P系统和结构 \r\n\r\n 第5章 系统话题探讨 73 \r\n\r\n 5.1 网络传输 73 \r\n\r\n 5.1.1 通信模型 73 \r\n\r\n 5.1.2 资源(节点)搜索的含义 74 \r\n\r\n 5.1.3 虚拟名字空间 75 \r\n\r\n 5.1.4 路由 75 \r\n\r\n 5.2 协议 77 \r\n\r\n 5.3 元数据 78 \r\n\r\n 5.4 数据格式 80 \r\n\r\n 5.5 功能的集成和互操作性 81 \r\n\r\n 5.5.1 J2EE和Java的消息传输服务 82 \r\n\r\n 5.5.2 Web服务和SOAP-RP 83 \r\n\r\n 5.5.3 CORBA和SCOAP 84 \r\n\r\n 5.5.4 Jini和JavaSpaces 85 \r\n\r\n 5.6 安全性 86 \r\n\r\n 5.6.1 传统的安全性的需求 86 \r\n\r\n 5.6.2 匿名性 86 \r\n\r\n 5.6.3 信任关系 87 \r\n\r\n 5.6.4 可审计性 87 \r\n\r\n 5.7 性能 88 \r\n\r\n 总结 88 \r\n\r\n 第6章 P2P动态网络 90 \r\n\r\n 6.1 对等节点和资源检索 90 \r\n\r\n 6.1.1 路由器对等节点和动态网络 91 \r\n\r\n 6.1.2 广播 91 \r\n\r\n 6.1.3 选择性广播 95 \r\n\r\n 6.1.4 适应性广播 96 \r\n\r\n 6.2 身份标识和在线状态 97 \r\n\r\n 6.3 虚拟网络空间 97 \r\n\r\n 6.4 路由 101 \r\n\r\n 6.4.1 覆盖网络 101 \r\n\r\n 6.4.2 平面网络模型 102 \r\n\r\n 6.4.3 层次型网络模型 103 \r\n\r\n 6.5 性能 103 \r\n\r\n 6.5.1 带宽的可扩展性 104 \r\n\r\n 6.5.2 容错功能 105 \r\n\r\n 总结 105 \r\n\r\n 第7章 消息传输方式及协议 107 \r\n\r\n 7.1 什么是协议 107 \r\n\r\n 7.2 HTTP协议 107 \r\n\r\n 7.3 SMTP协议 109 \r\n\r\n 7.4 SOAP协议 109 \r\n\r\n 7.5 BEEP协议 110 \r\n\r\n 7.5.1 BEEP协议中使用的一些术语 110 \r\n\r\n 7.5.2 BEEP协议的工作方式 111 \r\n\r\n 7.5.3 使用BEEP协议的Java绑定 111 \r\n\r\n 7.5.4 APEX协议 119 \r\n\r\n 7.5.5 BEEP的未来 119 \r\n\r\n 7.6 使用定制协议 120 \r\n\r\n 总结 120 \r\n\r\n 第8章 P2P数据格式和数据交换 121 \r\n\r\n 8.1 目前使用的元数据表示形式 121 \r\n\r\n 8.1.1 P2P的困境 122 \r\n\r\n 8.1.2 元数据和信息 122 \r\n\r\n 8.1.3 万维网. P2P和元数据 123 \r\n\r\n 8.1.4 HTML和元数据 123 \r\n\r\n 8.2 XML和元数据 123 \r\n\r\n 8.2.1 语义Web--一种历史的观点 124 \r\n\r\n 8.2.2 Dublin 核心元数据 126 \r\n\r\n 8.2.3 其他标准 127 \r\n\r\n 8.2.4 Java和RDF:HP的Jena工具集 127 \r\n\r\n 8.3 P2P系统中的XML和元数据:应用程序 129 \r\n\r\n 8.3.1 消息传输 129 \r\n\r\n 8.3.2 数据内容管理 130 \r\n\r\n 8.3.3 XML作为数据源 130 \r\n\r\n 8.3.4 XML作为P2P应用程序的部署层模型 130 \r\n\r\n 8.4 在P2P网络搜索对等节点资源 131 \r\n\r\n 总结 132 \r\n\r\n 第9章 集成和互操作性 133 \r\n\r\n 9.1 从套接字到分布式对象:集成网络协议 133 \r\n\r\n 9.2 确定集成对象:将什么东西集成在一起 135 \r\n\r\n 9.2.1 现有系统(支配着这个世界的系统) 135 \r\n\r\n 9.2.2 语法和语义方面的问题 135 \r\n\r\n 9.3 通用的集成协议和系统 136 \r\n\r\n 9.3.1 坚强的老战士:EDI协议 136 \r\n\r\n 9.3.2 Java RMI 138 \r\n\r\n 9.3.3 CORBA 140 \r\n\r\n 9.3.4 DCOM 142 \r\n\r\n 9.3.5 Web服务. 基于XML的远程过程调用和SOAP 142 \r\n\r\n 9.3.6 其他系统 144 \r\n\r\n 总结 144 \r\n\r\n 第10章 P2P的安全性 145 \r\n\r\n 10.1 网络的安全性要求 145 \r\n\r\n 10.2 网络身份标识 146 \r\n\r\n 10.3 安全性基础 147 \r\n\r\n 10.4 身份识别 152 \r\n\r\n 10.4.1 地址 153 \r\n\r\n 10.4.2 名字空间 153 \r\n\r\n 10.4.3 中心化的身份识别和本地身份识别 153 \r\n\r\n 10.4.4 身份标识中的其他信息 154 \r\n\r\n 10.5 身份认证 154 \r\n\r\n 10.5.1 密码 154 \r\n\r\n 10.5.2 挑战-响应 155 \r\n\r\n 10.5.3 可信任的第三方部件 155 \r\n\r\n 10.5.4 令牌 156 \r\n\r\n 10.5.5 数字化证书 156 \r\n\r\n 10.6 授权 157 \r\n\r\n 10.6.1 Kerberos 157 \r\n\r\n 10.6.2 PKI 159 \r\n\r\n 10.6.3 SAML 161 \r\n\r\n 10.6.4 Microsoft .NET Passport 163 \r\n\r\n 10.6.5 数据的完整性 166 \r\n\r\n 10.6.6 保密性 166 \r\n\r\n 10.6.7 不可否认性 167 \r\n\r\n 10.7 私有性和匿名性 169 \r\n\r\n 10.8 信任 171 \r\n\r\n 10.9 可审计性 174 \r\n\r\n 10.9.1 微小付费模型 174 \r\n\r\n 10.9.2 声誉模型 174 \r\n\r\n 10.10 为开发安全的P2P应用程序的软件 175 \r\n\r\n 10.11 其他资源 186 \r\n\r\n 总结 188 \r\n\r\n \r\n\r\n 第三部分 使用Java开发分布式系统 \r\n\r\n 第11章 Web服务 191 \r\n\r\n 11.1 Web服务和Web服务对互操作性的促进作用 191 \r\n\r\n 11.1.1 应用程序的集成 192 \r\n\r\n 11.1.2 面向服务的应用程序结构 193 \r\n\r\n 11.2 Web服务架构:互操作功能栈 193 \r\n\r\n 11.2.1 Web服务的网络功能栈 194 \r\n\r\n 11.2.2 描述功能栈 195 \r\n\r\n 11.2.3 服务检索功能栈 195 \r\n\r\n 11.3 Web服务涉及到的主要技术 196 \r\n\r\n 11.3.1 XML 196 \r\n\r\n 11.3.2 SOAP 206 \r\n\r\n 11.3.3 WSDL 209 \r\n\r\n 11.3.4 UDDI 215 \r\n\r\n 总结 223 \r\n\r\n 第12章 消息传输和针对XML的Java API 224 \r\n\r\n 12.1 针对第三方服务的标准API 224 \r\n\r\n 12.1.1 任何P2P应用程序架构的两个基本需求 224 \r\n\r\n 12.1.2 Java处理P2P系统基本需求的方式 225 \r\n\r\n 12.1.3 XML消息传输的概念 226 \r\n\r\n 12.2 JMS和消息传输的重要性 226 \r\n\r\n 12.2.1 消息传输的含义 226 \r\n\r\n 12.2.2 消息传输和请求-响应通信方式的比较 226 \r\n\r\n 12.2.3 消息传输客户端和消息传输提供者 227 \r\n\r\n 12.2.4 作为P2P系统对等节点的消息传输客户端 227 \r\n\r\n 12.2.5 P2P应用程序消息传输提供者扮演的角色 227 \r\n\r\n 12.2.6 面向消息的中间件(Message-Oriented Middleware, MOM) 228 \r\n\r\n 12.2.7 Java消息传输服务 228 \r\n\r\n 12.2.8 使用JMS开发应用程序 229 \r\n\r\n 12.2.9 一个基于JMS的消息传输应用程序 230 \r\n\r\n 12.3 用于XML文档解析的Java API 238 \r\n\r\n 12.3.1 使用JAXP和DOM编辑SOAP请求消息 239 \r\n\r\n 12.3.2 使用JAXP和SAX经过简单API处理SOAP响应消息 243 \r\n\r\n 12.3.3 JAXP中的XSLT 249 \r\n\r\n 12.4 XML和Java提供的用于绑定XML的API 251 \r\n\r\n 12.5 使用JAXM控制XML消息的结构 255 \r\n\r\n 12.5.1 JAXM作为一个简单的SOAP客户端 256 \r\n\r\n 12.5.2 使用JAXM编辑SOAP消息的消息头 260 \r\n\r\n 12.5.3 使用JAXM消息传输提供者和概要文件 261 \r\n\r\n 总结 263 \r\n\r\n 第13章 使用注册簿 265 \r\n\r\n 13.1 用于P2P应用程序的XML注册簿 265 \r\n\r\n 13.2 UDDI 266 \r\n\r\n 13.3 使用Java编辑UDDI消息请求 276 \r\n\r\n 13.4 ebXML(针对电子商务的XML) 280 \r\n\r\n 13.5 针对XML注册簿的Java API 295 \r\n\r\n 13.6 访问Web服务 301 \r\n\r\n 总结 302 \r\n\r\n 第14章 Jini和JavaSpace 303 \r\n\r\n 14.1 获得Jini 303 \r\n\r\n 14.2 标准化接口 303 \r\n\r\n 14.3 HTTP服务器和协议 304 \r\n\r\n 14.4 远程方法调用 304 \r\n\r\n 14.4.1 RMI注册簿 306 \r\n\r\n 14.4.2 单点广播和能自启动的服务 306 \r\n\r\n 14.4.3 在P2P应用程序中RMI扮演的角色 311 \r\n\r\n 14.5 查询和检索 311 \r\n\r\n 14.5.1 理解服务检索的管理机制 312 \r\n\r\n 14.5.2 基于多点广播的消息传输和基于单点广播的消息传输 313 \r\n\r\n 14.5.3 Jini查询服务 315 \r\n\r\n 14.5.4 Jini中的服务检索和绑定 317 \r\n\r\n 14.6 Jini服务 326 \r\n\r\n 14.6.1 检索和查询服务 326 \r\n\r\n 14.6.2 重新确定租借时间服务 326 \r\n\r\n 14.6.3 事件邮箱服务 327 \r\n\r\n 14.6.4 支持P2P事务 327 \r\n\r\n 14.6.5 支持P2P通信(JavaSpace, Java空间) 328 \r\n\r\n 总结 331 \r\n\r\n 第15章 P2P Jini和JavaSpace 333 \r\n\r\n 15.1 边缘服务 333 \r\n\r\n 15.1.1 分布式通信 334 \r\n\r\n 15.1.2 永久通信通道 343 \r\n\r\n 15.1.3 JavaSpace实时消息实例 346 \r\n\r\n 15.1.4 集合节点 353 \r\n\r\n 15.2 自愈合网络 353 \r\n\r\n 15.3 智能软件代理 355 \r\n\r\n 15.3.1 简单软件代理应用程序框架 355 \r\n\r\n 15.3.2 移动代理 356 \r\n\r\n 总结 357 \r\n\r\n 第16章 JXTA和XML 358 \r\n\r\n 16.1 网络的虚拟化 358 \r\n\r\n 16.1.1 JXTA身份标识. 信任状以及身份标识和信任状的公告信息 361 \r\n\r\n 16.1.2 转发(Relay) 362 \r\n\r\n 16.1.3 端点(Endpoint) 364 \r\n\r\n 16.1.4 管道的重要性 364 \r\n\r\n 16.2 JXTA协议 365 \r\n\r\n 16.2.1 对等节点解析器协议 366 \r\n\r\n 16.2.2 端点路由协议 368 \r\n\r\n 16.2.3 对等节点检索协议 369 \r\n\r\n 16.2.4 集合对等节点协议 370 \r\n\r\n 16.2.5 管道绑定协议 371 \r\n\r\n 16.2.6 对等节点信息协议 372 \r\n\r\n 16.2.7 对等节点组和对等节点成员身份协议 372 \r\n\r\n 16.2.8 JXTA服务 375 \r\n\r\n 16.2.9 对等节点组服务 376 \r\n\r\n 16.2.10 JXTA模块 377 \r\n\r\n 16.3 JXTA J2SE API 379 \r\n\r\n 16.4 第一个JXTA应用程序 379 \r\n\r\n 16.5 JXTA素数检索应用程序 381 \r\n\r\n 16.5.1 JXTA应用程序的设计 383 \r\n\r\n 16.5.2 消息定义 384 \r\n\r\n 16.5.3 服务的定义和检索 385 \r\n\r\n 16.5.4 服务的实现 385 \r\n\r\n 16.5.5 创建和发布公告信息 387 \r\n\r\n 16.5.6 处理从InputPipe对象中传输来的消息 391 \r\n\r\n 16.5.7 素数检索应用程序的客户端 392 \r\n\r\n 总结 400 \r\n\r\n 第17章 JXTA Shell 401 \r\n\r\n 17.1 为什么要使用Shell 401 \r\n\r\n 17.2 启动和使用Shell 403 \r\n\r\n 17.2.1 使用man命令 403 \r\n\r\n 17.2.2 JXTA Shell程序和Unix shell之间的差别 404 \r\n\r\n 17.2.3 环境变量 404 \r\n\r\n 17.3 通过Shell与远程对等节点进行交互 409 \r\n\r\n 17.4 Shell程序的扩展 412 \r\n\r\n 17.5 连接Shell命令 418 \r\n\r\n 总结 419 \r\n\r\n 第四部分 P2P应用程序示例 \r\n\r\n 第18章 构建个人化入口应用程序 423 \r\n\r\n 18.1 个人化入口的基本概念 423 \r\n\r\n 18.2 信息内容管理 424 \r\n\r\n 18.3 个人化的信息空间 425 \r\n\r\n 18.4 共享信息 427 \r\n\r\n 18.5 信息发布 427 \r\n\r\n 18.6 个人化入口的设计 428 \r\n\r\n 18.6.1 个人化入口的功能 429 \r\n\r\n 18.6.2 设计个人化入口应用程序的类 430 \r\n\r\n 18.7 应用程序代码 431 \r\n\r\n 18.7.1 资源租用 433 \r\n\r\n 18.7.2 服务检索 441 \r\n\r\n 18.8 运行应用程序实例 443 \r\n\r\n 18.8.1 配置 443 \r\n\r\n 18.8.2 启动服务 443 \r\n\r\n 总结 446 \r\n\r\n 第19章 P2P控制器 447 \r\n\r\n 19.1 P2P控制器 447 \r\n\r\n 19.1.1 对等节点域的形成 447 \r\n\r\n 19.1.2 对等节点的在线状态 447 \r\n\r\n 19.1.3 监控 447 \r\n\r\n 19.2 应用程序的设计 448 \r\n\r\n 19.2.1 应用程序的实现细节 449 \r\n\r\n 19.2.2 P2P控制器应用程序功能示例 450 \r\n\r\n 19.2.3 P2P控制器应用程序的目的 452 \r\n\r\n 19.2.4 P2P控制器应用程序的使用场景 453 \r\n\r\n 19.2.5 类设计 453 \r\n\r\n 19.3 代码细节 454 \r\n\r\n 19.3.1 P2PDashboard类的实现细节 454 \r\n\r\n 19.3.2 PeerDiscovery类的实现细节 471 \r\n\r\n 19.3.3 GroupDiscovery.java类的实现细节 475 \r\n\r\n 19.3.4 SortedListModel类的实现细节 480 \r\n\r\n 总结 482 \r\n\r\n 第20章 在P2P应用程序中使用SOAP 483 \r\n\r\n 20.1 将Web服务和P2P结合在一起将给我们带来什么 483 \r\n\r\n 20.1.1 Web服务使用的模型 483 \r\n\r\n 20.1.2 目前Web服务模型中采用的客户端-服务器通信模式 484 \r\n\r\n 20.1.3 P2P消息传输模型 484 \r\n\r\n 20.2 P2P Web服务 485 \r\n\r\n 20.2.1 P2P体系结构上的SOAP应用程序 485 \r\n\r\n 20.2.2 基于P2P网络基础之上的SOAP应用程序的使用场景 487 \r\n\r\n 20.2.3 基于P2P网络基础之上的SOAP应用程序中包含的类 488 \r\n\r\n 20.2.4 如何使用基于P2P网络基础之上的SOAP应用程序 502 \r\n\r\n 20.3 推荐的一些改进方案 504 \r\n\r\n 20.3.1 对UDDI的支持 504 \r\n\r\n 20.3.2 统计调用请求和实现CRM解决方案 504 \r\n\r\n 总结 505 \r\n\r\n 第21章 P2P游戏 506 \r\n\r\n 21.1 P2P游戏应用程序 506 \r\n\r\n 21.1.1 对等节点域的形成 506 \r\n\r\n 21.1.2 应用程序中的路由和消息传输 506 \r\n\r\n 21.2 应用程序的设计 506 \r\n\r\n 21.2.1 应用程序细节 507 \r\n\r\n 21.2.2 游戏应用程序的适用场景 513 \r\n\r\n 21.2.3 类设计 513 \r\n\r\n 21.3 应用程序代码细节 514 \r\n\r\n 总结 531 \r\n\r\n 第22章 远程学习系统 532 \r\n\r\n 22.1 远程学习系统 532 \r\n\r\n 22.1.1 应用程序的目的 532 \r\n\r\n 22.1.2 对等节点域的形成 532 \r\n\r\n 22.2 应用程序的设计 532 \r\n\r\n 22.2.1 应用程序细节 533 \r\n\r\n 22.2.2 应用程序的使用场景 536 \r\n\r\n 22.2.3 类设计 536 \r\n\r\n 22.2.4 具体细节 536 \r\n\r\n 22.3 代码细节 536 \r\n\r\n 22.3.1 Student类的实现细节 536 \r\n\r\n 22.3.2 Teacher类的实现细节 544 \r\n\r\n 22.3.3 Agent类的实现细节 550 \r\n\r\n 22.3.4 AgentFactory类的实现细节 554 \r\n\r\n 总结 555 \r\n\r\n 第23章 P2P的未来发展方向 556 \r\n\r\n 23.1 P2P设备 556 \r\n\r\n 23.2 语义和Ontology 557 \r\n\r\n 23.2.1 资源描述框架 557 \r\n\r\n 23.2.2 Ontology 559 \r\n\r\n 23.3 CC/PP 562 \r\n\r\n 23.4 WSIL 564 \r\n\r\n 23.5 Web服务的互操作性 565 \r\n\r\n 23.6 Grid计算 565 \r\n\r\n 23.7 智能化软件代理 567 \r\n\r\n 23.7.1 软件代理 568 \r\n\r\n 23.7.2 安全性. 身份标识和完整性 568 \r\n\r\n 23.7.3 软件代理的通信 568 \r\n\r\n 23.8 P2P技术全家福 569 \r\n\r\n 附 录 \r\n\r\n 附录 J2EE概述 575 \r\n
\r\n
P2P技术不仅是一门全新的技术, 而且还是计算机领域内众多重要技术的集大成者. 很高兴能有机会翻译这本关于P2P技术的书. 这本书不仅全面介绍了P2P技术所涉及到的多个领域, 还包含了丰富的示例. 在翻译本书的过程中, 译者感到受益匪浅, 同时也更加坚信读者在阅读本书的过程中也会有类似的感觉!
全书包括四大部分和一个附录. 这四部分内容分别介绍了P2P系统的基本概念. P2P系统所涉及到的一些重要技术和P2P系统及应用程序的体系结构. 在Java平台上开发分布式应用程序和P2P应用程序示例. 附录部分则是关于J2EE的概要介绍.
第一部分内容向读者介绍了P2P的基本概念. P2P应用程序的核心开发平台Java的特性. P2P应用程序的类型以及一些相关的产品, 最后介绍了P2P和分布式计算的关系以及如何使用现有的P2P应用程序架构开发P2P应用程序. 这部分内容的重点是Java平台的特性. 分布式计算的基本概念和一些关于网络通信的基本概念.
第二部分内容向读者介绍了P2P系统的各个组成部件以及P2P应用程序的体系结构. P2P系统的基本组成部分包括P2P动态网络. P2P使用的网络传输协议. P2P使用的数据格式和P2P节点之间的消息交换. 异构应用程序的集成和互操作性以及P2P系统中的安全性问题. 这部分内容是全书的核心, 只有全面掌握了这部分内容, 读者才可能对P2P系统有更全面而深刻的理解.
第三部分内容向读者介绍了使用Java开发分布式系统的知识. P2P系统不仅是分布式系统的一种特殊类型, 而且还是一种彻底的分布式系统. 这部分内容的重点是开发各种不同类型的P2P分布式系统, 以及某些支持P2P系统的核心产品标准. 正如本书一再强调的那样:P2P不是空中楼阁, 而是以很多先进的技术. 产品和标准为基础的.
第四部分内容向读者介绍了5个具体的应用程序. 读者可通过该部分的内容仔细体会如何在现有技术和产品的基础上实现实际的P2P系统. 这部分内容将前面三部分内容中介绍的各种知识具体化了. 深入学习这部分内容将使读者能迅速获得开发P2P应用程序的实战经验.
附录部分向读者介绍了J2EE的基本概念. 如果读者需要获得有关J2EE的更多知识, 请参考一些专门介绍J2EE的书籍.
P2P不仅是一门很新的技术, 而且还涉及到很多其他相关技术, 加之译者水平有限, 书中疏漏之处在所难免, 请读者批评指正!
译者
2003.5.6
这本深入介绍P2P计算技术的书籍是为那些需要学习P2P技术的概念. 编程技术和开发实际的应用程序的Java专业程序员编写的. 与其他面向对象的编程语言相比, 尽管Java语言是一门相对容易学习和使用的语言, 但是Java语言平台涉及的领域非常广泛, 我们不可能在本书中向读者介绍关于Java语言平台的所有知识. 希望更多地了解Java知识的读者可参考如下书籍:
● Laura Lemay和Rogers Cadenhead编著的Teach Yourself Java2 in 21 days第三版, 由Sams公司出版(中文版《21天学通Java2》(第三版)由人民邮电出版社出版).
● Harvey M. Deitel和Paul J. Deitel编著的Java How to Program第四版, 由Prentice-Hall公司出版.
● Chuck Cavaness. GeoffFriesen和BrianKeeton编著的Special Edition Using Java 2 Standard Edition, 由Que公司出版.
本书的组织方式
本书正文分为四大部分.
第一部分 P2P简介
本书的第一部分向读者介绍了P2P系统的基本概念, 并重点介绍了围绕P2P系统的应用程序类型和所面临的问题. 这部分内容对通用的P2P应用程序体系结构. 网络和应用程序等进行了概要介绍. 此外, 这部分内容还将P2P与一些现有技术和正处于发展阶段的技术进行了比较, 这些技术包括Web服务. JXTA. Jini. RMI和CORBA.
第二部分 P2P系统和结构
本书的第二部分内容是对第一部分内容所介绍的P2P基本概念的扩展, 并对P2P系统方面的某些话题进行了深入的介绍. 这部分内容的每一章都针对P2P系统的某个特定需求, 而这些需求正是设计和开发成熟的P2P应用程序的基础.
本部分介绍的P2P系统话题包括:
● 资源检索:设计和创建P2P动态网络.
● 消息传输:P2P网络中使用的通用的消息传输和传输协议.
● 元数据:P2P应用程序中的元数据的正确定义和使用.
● 数据格式和交换:P2P信息内容定义中使用的通用数据格式和标准.
● 系统性能:性能需求和这些需求对健壮的P2P系统的重要意义.
● 集成和互操作性:将P2P应用程序与现有技术以及现有系统结合在一起使用.
● 安全性:在一个由互连的离散化节点组成的复杂网络中实现安全性.
最后, 本部分向读者介绍了一个用于说明Java能为P2P的所有这些需求提供一个优秀平台的例子.
第三部分使用Java开发分布式系统
本书第三部分向读者详细介绍了分布式计算技术中的一些热点话题和技术. 此外, 这部分内容还使用了一些应用程序示例来印证我们介绍的各种不同技术.
对于JavaP2P的每一种技术, 我们都是从P2P应用程序程序的角度加以介绍的, 并重点介绍了在使用这些技术时, 程序员将要面临和关心的问题.
这部分内容主要介绍了以下几方面的技术:
● J2EE/J2SE/J2ME:使用JMS. JAXP. JAXB. JAXR和小型设备以及代理设备开发P2P应用程序.
● Web服务架构:理解Web服务的部件, 比如XML. SOAP. UDDI和WSDL.
● Jini和JavaSpaces:使用Java的网络技术为P2P的混合体系结构中的服务检索提供一种统一的框架. 本书对单点广播和多点广播的消息传输机制的功能进行了介绍和说明.
● JXTA和XML:使用XML标准化P2P应用程序的消息交换格式. 这部分内容介绍了JXTA核心部件. 服务和使用JXTA标准开发的通用应用程序.
第四部分P2P应用程序示例
本书的最后一部分内容向读者详细介绍了一些P2P应用程序示例. 针对开发健壮的P2P应用程序所遇到的普遍问题, 每一个应用程序示例都向读者说明了如何合理地使用特定的编程技术来解决这些问题.
● 个人化入口:这个应用程序示例说明了文件共享和如何使用P2P的共享空间(JavaSpaces)以及XMLDublin的核心元数据定义在Web上发布数据信息.
● P2P控制器:这个应用程序示例说明了用于创建对等节点和对等节点组以及检测对等节点的状态的技术. 此外, 这个应用程序还说明了共享空间的监控和配置的概念.
● 在P2P应用程序中使用SOAP:在这一章中我们介绍了通过服务网关集成SOAP和P2P的概念. 我们考虑了这两种技术的共同之处, 以及这两种技术如何实现互操作. 在这一章中, 我们将JXTA作为P2P网络的一个例子, 开发了一个利用JXTA对等, 节点优势的服务网关应用程序.
● P2P游戏:这里介绍的P2P游戏允许玩家在获得或传递一个其名称为“Get Out Of Jail”的令牌的情况下进入或离开该游戏, 该游戏中的“GetOutOfJail”令牌将在参加游戏的所有玩家之间传递. 这个游戏程序展示了用于形成一个对等节点域并在对等节点域的对等节点之间传输消息的技术.
● 远程学习系统:在这一章中, 我们用一个应用程序来说明P2P协议和软件代理之间的对应关系, 并探讨了其他的通信技术.
● P2P的未来发展方向:在这一章中, 我们向读者简单介绍和描述了P2P技术的一些重要发展趋势, 以及P2P和一些相关技术的未来发展方向.
源代码
读者可从http://www.samspublishing. com上获得本书中的所有源代码和应用程序示例. 在这个站点上, 读者只需在搜索框中输入本书原书的ISBN(0672323990)并单击“Search”按钮, 就能访问与本书相关的一些信息, 并下载本书使用的所有源代码.