Jabber is a set of protocols expressed in XML, and an extensible framework that allows people and applications to exchange all sorts of information, from simple text messages to being used to extend the backbone of an enterprise data system. Jabber gives you the power to build applications that have identity, presence, and that can take part in conversations.Programming Jabber offers developers a chance to learn and understand the Jabber technology and protocol from an implementer's point of view. Detailed information of each part of the Jabber protocol is introduced, explained, and discussed in the form of mini-projects, or simple and extended examples. Programming Jabber provides this foundation by:

Showing you how to install and configure the Jabber server

Providing a detailed overview of the server architecture and configuration options

Covering the core Jabber technologies such as XML streams and Jabber identifiers

Referencing all of Jabber's XML namespaces

Examining the client registration and authentication phases

Showing how to deploy your own Jabber-based messaging solutions

Demonstrating how to embed XML-RPC-style call mechanisms into Jabber

Programming Jabber is divided into two parts. The first part serves as an introduction to Jabber; you'll learn about its features, why it's more than an IM system, and how to install and configure a Jabber server of your own. The second part provides detailed information about the Jabber protocol, and a series of practical examples, which can be used to solve everyday problems. The examples, in Perl, Python, and Java, use various Jabber features as a way of illustrating parts of the protocol.Programming Jabber provides the foundation and framework for developers to hit the ground running, and is the essential book on Jabber.

DJ Adams

DJ Adams is an old SAP hacker who still thinks JCL and S/370 assembler are pretty cool. In recent years he's been successfully combining open source software with R/3 to produce hybrid systems that show off the power of free software. He's the author of O'Reilly's Programming Jabber book, contributes articles to O'ReillyNet's P2P site, and has to own up to being responsible for the Jabber::Connection, Jabber::RPC and Jabber::Component::Proxy modules on CPAN.

Our look is the result of reader comments, our own experimentation, and feedback from distribution channels. Distinctive covers complement our distinctive approach to technical topics, breathing personality and life into potentially dry subjects. The animal on the cover of Programming Jabber is a bare-throated bellbird (Procnias nudicollis). This particular type of bellbird can be found from Central America to Argentina, though other types can be found in New Zealand and Australia. Bellbirds are named for their distinctive bell-like call. The call of the bare-throated bellbird in particular resembles a loud, scratchy gong.The bare-throated bellbird is the national bird of Paraguay. It finds its home in the moist, tropical climates of the rain forest. Due to deforestation, the already-rare bird is at risk of extinction. Catherine Morris was the production editor and proofreader and Norma Emory was the copyeditor for Programming Jabber. Tatiana Apandi Diaz, Claire Cloutier, and Sue Willing provided quality control. Interior composition was done by Derek Di Matteo and Catherine Morris. Nancy Crumpton wrote the index.Ellie Volckhausen designed the cover of this book, based on a series design by Edie Freedman. The cover image is a 19th-century engraving from the Dover Pictorial Archive. Emma Colby produced the cover layout with QuarkXPress 4.1 using Adobe's ITC Garamond font.David Futato designed the interior layout based on a series design by Nancy Priest. The print version of this book was created by translating the DocBook XML markup of its source files into a set of gtroff macros using a filter developed at O'Reilly & Associates by Norman Walsh. Steve Talbott designed and wrote the underlying macro set on the basis of the GNU troff -gs macros; Lenny Muellner adapted them to XML and implemented the book design. The GNU groff text formatter version 1.11.1 was used to generate PostScript output. The text and heading fonts are ITC Garamond Light and Garamond Book; the code font is Constant Willison. The illustrations that appear in the book were produced by Robert Romano and Jessamyn Read using Macromedia FreeHand 9 and Adobe Photoshop 6. This colophon was written by Linley Dolby.

Jabber was first conceived by Jeremie Miller (pic) in early 1998 in an effort to unify the disparate instant messaging networks. Instant Messaging networks rely on the network effect to gain and retain marketshare. The concept is the same when applied to any sort of participatory network whether it's a junk exchange, or content exchange, the value of the network increases with the square of the number of participants.

If this is true, then doesn't it follow that it is in the best interests of the IM networks to establish peering agreements with each other so that their users can directly contact users on other networks without having to install each client?

Hello Jabber.

When I first picked up this book, I expeted to understand the Jabber protocol in sufficient depth to implement my own IM client. Instead, the approach this book takes is that Jabber isn't just an XML-based protocol strictly for IM, rather it is a general purpose event notification protocol that has some very nice message routing and user management features built into it. While i was reading about the messages that Jabber has defined as part of the protocol, I could easily see other applications/devices generating Jabber messages to notify subscribers (either other systems, or people) of events.

Part 1 of the book focuses on getting you up to speed on the basics of Jabber technology: motivation, major features, XML protocol sample and compiling/configuring your own Jabber server. Chapter 2 presents the "10,000 foot view" of Jabber technology. In here you will find a sample client-query request/response flow with full HTTP headers, discussed step by step. The next two chapters are a very in-depth discussion of installing and configuring your own Jabber server. When you dive into a custom configuration of a fleet of Jabber servers (a "constellation" in Jabber terminology), it really starts to hit home that the real problem that Jabber solves is far deeper than just IM.

From there, part 2 kicks off with a detailed discussion of the most basic building blocks of Jabber technology: resource identifiers, XML handling mechanism and the set of XML elements/attributes that make up the vocabulary of the Jabber protocol. Each element/attribute is presented with an annotated example and sample client/server interactions where appropriate. Examples can make or break a technical book, and these examples do a good job of illustrating how the element/attribute is used.

The following chapters take you through using standard Jabber features, user registration/authorization, messages, presence, groupchat, components and the event model to enable new applications. One very interesting application that presented is enabling developers to receive CVS commit notifications via Jabber.

What's Bad?

I know the development community is suspicious of glowing book reviews where everthing is wonderful and nothing could be done to improve the book, so I'll nitpick. My major problem with this book is that the overwhelming majority of the sample applications are written in PERL/TK. This isn't a problem in and of itself, but I'm not a PERL/TK developer. If I build a Jabber solution, it will be in java, so PERL/TK samples don't do me a lot of good. I think equal time should be given to implementing Jabber using the 2 most used languages, as defined by the number and activity of open source projects using Jabber technology.

What's Good?

This book covers everything relevant to Jabber technology, from lowest level innerworkings and extensibility examples for developers to configuration and deployment for admins. Most of the book is spent looking directly at the Jabber XML protocol, instead of a specific API implementation. This way, the book covers the technology and doesn't get lost in how one particular API models the protocol.

So What's In It For Me?

If you want to implement an inside-the-firewall IM solution for your company/group/tribe or investigate integrating event notification into an application, this is a great starting point. If you're just curious about Jabber and want to know how it works, then this will give you enough information to get you hooked.

As a disclaimer, I have been involved with Jabber for 3 years, am the author of one of the more popular Jabber clients for linux, and am a friend of DJ's.

Jabber finally has its Bible. DJ has written an excellent introduction into the world of Jabber, covering everything a programmer would need to become familiar with the protocol for this Open instant messaging system. He covers everything from the basics of what exactly Jabber is, how to deal with presence, messages, and basic extensions, all the way up to complicated and unfinished extensions such as XML-RPC. Anyone programming Jabber needs this as a reference, and anyone looking to get started in the Jabber world need not look further than this book.