对三本有关该协议书籍的研究
John Zukowski(jaz@zukowski.net)
总裁,JZ Ventures, Inc.
2002 年 6 月
Jabber 是一种开放的、基于 XML 的协议,可用来将即时消息传递添加到应用程序。如果您有兴趣学习 Jabber,但又不是十分确信从哪里入手,那么本篇对三本有关该主题书的评述可以帮助您从正确的地方着手。
例如 AOL Instant Messenger(AIM)、ICQ、MSN Messenger 或 Yahoo! Messenger 等即时信使(IM),需要访问供应商特定的服务器以使多个用户之间便于进行通信。尽管一些供应商允许您将即时消息传递功能添加到您的应用程序,但是,您仍然得使用他们的服务器和访问控制。如果您想将即时消息传递包含进自己的应用程序,但又保持对它的控制 — 例如在企业内部网中或者甚至是在因特网上 — Jabber 可能很适合您。
Jabber 是一种开放的、基于 XML 的即时消息传递和存在协议。在本文中,我将探讨三本在 2002 年 5 月可获得的书籍,它们将帮助您理解什么是 Jabber 以及如何使用 Jabber 协议开发应用程序。以字母为序,所评述的书分别是:
- Instant Messaging in Java,Iain Shigeoka (Manning,2002)
- Jabber Programming,Stephen Lee 和 Terence Smelser (M&T Books,2002)
- Programming Jabber,D.J. Adams (O'Reilly,2002)
获胜者是……
在本节,我将详细评述每本书。但是,如果您更喜欢了解这些书的快速、简略的比较,请参阅本文结尾的快速比较指南。
评述用一星到五星来衡量。一星表示评价相当差,而五星表示文章广受好评。
Instant Messaging in Java
Iain Shigeoka,Manning,2002
39.95 美元,380 页,ISBN 1-9301-1046-4
中高级。适合于那些有兴趣创建自己的基于 Java 的 Jabber 服务器的人士。
Instant Messaging in Java 讲述了一种以 Java 为中心学习 Jabber 的方法。该书分成两个部分:第一部分介绍了即时消息传递和 Jabber,而第二部分深入分析了各种 Jabber 协议。实质上,第二部分构建了一个 Jabber 服务器,还继续添加了一些新功能,最终提供一个带有用户帐户和消息传递的功能完善的 Jabber 系统。该书结尾处讨论了启用企业消息传递功能(如利用 SSL 扩展安全性)并创建了一个符合 Java 消息传递服务的(JMS)服务器。(这里的关键字是讨论;该章节完全未介绍任何代码。)
阅读 Instant Messaging in Java 时,会产生几个疑问,例如读者需要了解多少 Java 知识?以及考虑到 Jabber 是一个客户机-服务器协议,那么读者一定要擅长于创建多线程的客户机-服务器应用程序吗?从字面判断 — 在阅读完简介之后 — 我认为读者至少应当是中级 Java 程序员。在探究一些主题时,作者 Iain Shigeoka 不会手把手地指导您,但是,您将学到 Jabber 特定编码的不同方面。
读者还应当熟悉统一建模语言(Unified Modeling Language(UML))和设计模式;因为有一些图表贯穿了始终,同时文中提到的一些模式也很少做解释。不具备模式知识,您勉强可以阅读文章,但是,这样会使学习更为复杂,因为一些解释很简短,并假定读者具备诸如 Command Pattern 或模型-视图-控制器(MVC)一类的知识。
该书的重点是理解 Jabber 及其各种协议,以便在(用 Java)创建一个 Jabber 服务器时使用它们。如果这正是您寻求的,那么该书将会给您很大的帮助。书中涵盖的一些主题(如消息协议和客户机认证)为创建服务器提供了必需的详细信息。然后,您需要将 Jabber 的客户机方面集成进自己的应用程序,或者使用某一开放源代码或商业客户机与服务器对话。书中开发了一个客户机,但意味着它是用于服务器测试的,而不是真正作为功能完善的即时消息传递客户机。
优点:很好地涵盖了底层协议和体系结构。
缺点:目前服务器都是免费的。为什么又要费心去创建一个新的呢?
Jabber Programming
Stephen Lee 和 Terence Smelser,M&T Books,2002
39.99 美元,350 页,ISBN 0-7645-4934-0
中低级。通常适合于任何有兴趣创建基于 Visual Basic 的 Jabber 客户机的人士。
Jabber Programming 采用 Visual Basic 方法来探究 Jabber。该书分成三部分,分别提供了 Jabber 和可用客户机的概述、Linux 机器上测试服务器的安装说明以及有关如何创建自己的 Jabber 即时消息传递客户机的详细信息。与 Instant Messaging in Java 不一样,Jabber Programming 明显地重点讨论了创建与自己的服务器相对的 Jabber 客户机。因为作者 Stephen Lee 和 Terence Smelser 编写了一个现有的客户机,所以书中的侧重点有所不同也就不足为奇了。
Jabber Programming 从客户机和设置服务器的讨论开始。客户机信息是有关于 myJabber、Rival Messenger、WinJab 和 Jabber Instant Messenger 客户机的。实际上,myJabber 信息要比其它三种的概述多,大约有 40 页有关使用该工具进行通信的信息。由于还没有本地服务器,所以连接到一个公共的服务器。然后构建和配置用于测试的本地服务器 — 主要是测试您后面开发的内容,而不是用于测试 myJabber。
粗略地看,该书的后半部分讨论了如何创建自己的 Jabber 客户机。在介绍了少量可用的 Jabber COM 库以处理通信之后,该书引领您在 Visual Studio 中创建 Visual Basic 表单接口,并且将必需的源代码连接到各个部分。尽管该书的确可以帮助您构建一个不错的能运作的 Jabber 客户机,但是您不会真正了解底层协议的本质。所有东西都隐藏在所使用的 Jabber COM 库中,这在附录中有描述。
关于快速比较指南的“可从 Web 获得源代码”标题中的 * :尽管本书 CD 中书的源代码是按章节划分的,但是却不能在作者或出版商的网站上在线找到该书简介中说明的这个信息。您可以获得 Jabber 客户机软件,而不是只获得源代码的章节细分。此外,由于我没有使用 Linux 系统,所以没有测试书中描述的确切配置安装。
优点:重点介绍了创建客户机而不是服务器。
缺点:Jabber 本身说明较少。
Programming Jabber
D.J. Adams,O'Reilly,2002
39.95 美元,460 页,ISBN 0-596-00202-5
中高级。深入研究了体系结构和标记。表明 Jabber 不仅是一个 IM 协议。
Programming Jabber 采取了一种更加与语言无关的方法来探究 Jabber。该书分成两部分,第 1 部分探究了体系结构和系统配置,而第 2 部分深入研究了 Jabber 协议使用的各类消息。尽管作者 D.J. Adams 偏爱 Perl(考虑到他也是 Jabber::Connection 库的作者就不奇怪了),但是书中包含的示例也使用了 Python 和 Java 来表示。但是很可惜,每个示例都不是用所有三种语言表示的。
第 1 章的开始部分将一个虚构的 Jabber IM 会话显示为一系列 XML 消息。这为后面大多数的章节提供了一个适当的所期望的设置。由于含有 Jabber 体系结构的详细说明,并且向您演示了如何安装和配置一个 Jabber 服务器,所以从很大程度上说,Programming Jabber 实际上是一本组成 Jabber 消息的标记、属性和名称空间的参考指南。
该书表述的另一个要点是,Jabber 不仅是一个即时传递消息的协议,而且任何事件驱动的通知方案都可以在其中将消息发送给正在等待的订户。
最后一章探究了如何使用 Jabber 消息以维护通讯录、进行 XML-RPC 调用及连接到 SAP R/3 系统。
优点:与语言无关的说明。
缺点:欠缺完整的代码示例。
快速比较指南
下表提供了三本所评述的书的特征的快速参考概述:
Jabber 书籍概述 | |||||
---|---|---|---|---|---|
Instant Messaging in Java | Jabber Programming | Programming Jabber | |||
价格 | 39.95 美元 | 39.99 美元 | 39.95 美元 | ||
总页数 | 380 | 350 | 460 | ||
CD-ROM/可从 Web 获得源代码 | 无 / 是 | 有 / 否* | 无 / 是 | ||
作者 | 1 | 2 | 1 | ||
体系结构 | 良 | 差 | 良 | ||
协议 | 良 | 差 | 优 | ||
配置 | 差 | 良 | 良 | ||
语言/平台 | Java | Visual Basic,Linux | Perl、Python 和 Java,Linux | ||
级别 | 中高级 | 中低级 | 中高级 | ||
评定标准:未评定、差、中、良、优 字段中的星号(*)意味着在深入评述中提供了有关该主题的更多详细信息。 |
评定中一些项的注释:
- 体系结构范围表明总体 Jabber 系统体系结构。
- 协议范围表明探究底层协议的深入程度。
- 配置范围表明您将学到多少有关配置运行环境的知识。
- 语言/平台表明书中的示例使用了何种编程语言,以及提供了何种平台以运行示例。仅当需要时才显示平台。
- 级别表明该书针对的读者级别。
结束语
由于这些书的标价仅有 4 美分的差别,所以当然不能根据价格来赞成或者反对某本书。选择哪本书实际上取决于您希望将 Jabber 用于何种用途,以及您希望以何种编程语言来使用它。
在我看来,我更喜欢看到将三本书合并成一本书,其中作者很好的解释了体系结构、为我演示了如何设置基于 Java 的测试服务器(不在 Linux 机器),然后通过探究各个 Jabber 协议从而指导我创建图形化的客户机。不过这些书中没有一本完全做到这一点。Programming Jabber 可能最接近,但是如果您希望创建一个用于 Jabber 的 Java 服务器,Instant Messaging in Java 可能是个更佳的选择;至少,它重点介绍了更多有关该主题的知识。如果您希望创建一个 Visual Basic 客户机,那么 Jabber Programming 比较适合您。
- 请在 Jabber Software Foundation 学习更多有关 Jabber 的知识。
- 请访问 Instant Messaging in Java 的主页(包含源代码和章节样本)。
- 请访问 Programming Jabber 的主页(包含源代码和章节样本)。
- 请访问 Jabber Programming 主页(包含章节样本)。
- 获取 OpenIM 客户机(M&T 书目)的源代码。
- 查找 AOL Instant Messenger(AIM)。
- 了解 MSN Messenger。
- 获取 Yahoo! Messenger 的有关信息。
- 在 developerWorks 上 Gerhard Poul 的文章中查找更多有关 Jabber 的知识。(developerWorks,2002 年 5 月)
- 获取 IBM WebSphere Studio Site Developer,它是一个构建、测试和部署 Java Server Pages、servlet 以及与 XML 相关的应用程序和网站的易于使用且集成的开发环境。
- 查看如何成为一位 XML 及相关技术的 IBM 认证开发人员。
- 在 developerWorks XML 技术专区上查找更多 XML 资源。
关于作者![]() |