Earlier this year I was researching the possibilities for implementation of a portable java instant messaging system; I had little technological experience, or funding. I soon discovered the joys of the Jabber XML messaging protocols that seemed to fit the bill. There were only 3 books in print on this topic at the time and I surely must be one of the first people to read this, Shigeoka's offering on the subject.
Instant Messaging in Java appears ideal - it is a step-by-step guide to coding your own Jabber server and client application. What it fails to mention is that in 90% of situations, you will never need to write your own Jabber server; Jabber is an open source project with a series of daemon server implementations for a number of different platforms - should you ever need a more robust solution, Jabber's commercial arm are there to help.
Where this book rises above others on the subject is in the clarity with which it communicates the concepts behind the Jabber protocols. XML and Jabber in particular, can be complicated for newcomers by intricate DTDs or namespace definitions. Great use is made of sequence diagrams and XML to successfully remove the mystery of XML and present Jabber as the common-sense framework that it is.
The central part of the book concentrates on the implementation of the client and server; slowly adding more functionality as more Jabber concepts are introduced. Towards the end of the book, if you have been following the code examples, you should have a working Jabber system that supports group protocols, invites, authentication and more.
Instant Messaging in Java was my first step in this area and I required a lot of assistance with my project. In addition to the numerous Jabber community resources, I was grateful for the interactive elements supplied with this book. Manning provide a chat website to post your questions and discuss relevant topics - Iain, the author, was always helpful and prompt in his responses. The site, as you would expect, is also the best place to track book errata and code downloads.
Once the project is complete, Iain introduces the reader to the wider world of Instant Messaging - letting you know of the alternative and complementary IM tools available. I feel however that the book represents more of a personal project than a practical guide for reader implementations. There are so many IM tools out there and a wealth of web-based Jabber resources; in fact, after much research I abandoned Iain's book and explored a number of open-source Java APIs that achieved the same results, with less effort. I think of this book as a good introduction to Jabber, to IM and to a logical framework for building a Jabber server and client but I feel it is limited in its teaching abilities with regards to the implementation code.