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