Title: Jabber Developer's Handbook Authors: Dana Moore and William Wright ISBN: 0-672-32536-5 Publisher: SAMS Reviewer: Richard Dawe Before reading this book, I thought that Jabber was an instant messaging system. Jabber Developer's Handbook (JDH) quickly explains to you that it was designed as much more than that: Jabber is an extensible XML-based messaging bus. The first third of JDH starts off with a nice overview of the basics of Jabber and its architecture, including some basic code, which will please those eager to get their hands dirty. It continues by detailed chapters on setting up Jabber software (servers and clients), the Jabber protocol from the perspective of the client and the server architecture. I particularly liked the detailed walk-throughs of the protocol and the interactions between the various components in the server architecture, which were both very well explained. The middle third of the book contains examples of how to extend the Jabber server, offering real-world examples such as a database look-up service and a custom authentication method. These seemed like good examples of how to get started building your own services with Jabber. The last third of the book covers integrating Web Services (XML-RPC and SOAP) into Jabber, a Jabber chatbot, using Jabber for monitoring (e.g.: sending alerts as Jabber messages), integrating Jabber with JXTA (Sun's peer-to-peer technology that hasn't taken off) and Jabber libraries. I found the chapters on the Jabber chatbot and JXTA were weak and didn't really add anything to the book. The chapter on Jabber libraries is interesting, to compare how the various language bindings differ. There are also some brief appendices, one on XML. I doubt very much that this will help, if you've never encountered XML before - reading O'Reilly's "XML in a Nutshell" is probably a better bet. The authors have a friendly, conversational style, which makes it easy to read. The code examples in the book are in a variety of languages: Python, Java and some Ruby. Perl is only discussed in the chapter on Jabber libraries, but you should have no trouble with the Net::Jabber Perl module, if you can follow the examples in other languages. I do have some criticisms. The authors state that some parts of the protocol are optional, which I'd expect to cause interoperability problems, but none are discussed - it would be useful for the authors to share their experience. I felt the description of dial-back for weak authentication was little weak. Finally, some typos make the book feel a little rushed. Overall, I enjoyed reading this book, particularly the protocol and architectural discussions. Since Jabber is the basis for the IETF's instant messaging protocols, you may find this book a good way to get your head around them. Richard Dawe 2004-05-02