JavaServer Faces: The Complete Reference
($49.99 USD, McGraw-Hill), by Chris Schalk and Ed Burns, is a once-and-for-all reference to JSF 1.1 and 1.2, covering almost anything and everything JSF-related.
Differences between JSF 1.1 and 1.2 are noted whenever they might occur. The book also has some very helpful and interesting design notes from the specification group to enlighten readers of why some choices were made or not made, so that the reasoning behind decisions is exposed.
The book has five sections: an introduction to the framework, extending JavaServer Faces, applying JSF (which addresses security, i18n, and testing/debugging), JSF tools and libraries (with coverage of the standard component library, the MyFaces JSF implementation, and configuration files), and a set of appendices covering the Faces Console (a third-party tool to help configure JSF), Shale, migration from Struts, and a set of third-party component libraries.
The first section starts off with a history of JSF, and quickly launches into an application - a simple registration application, complete with error checking, data validation, navigation, and a working UI. Along the way, the authors explain the concepts used so that readers don't get confused. The details are explained in enough depth that readers can see why something is being done without drowning them in excess detail about what's actually happening.
Each chapter builds on the previous one, and in this reviewer's opinion, most readers would be able to actually start applying JSF almost from the very beginning. An idea is hardly ever presented without a clear explanation of why readers would want to understand it, although the request lifecycle is explained in the third chapter. That said, the request lifecycle is very clearly explained and justified, so while it's not clear why it's presented so early at first glance, a quick scan reveals how important it is to JSF, and why understanding it is a core concept JSF developers should be aware of.
The section on extending JSF covers custom UI components, custom components without a user interface, AJAX components, and the use of alternative display technologies like Facelets. Having this information clearly expressed in print is very useful, and it's also fairly complete, with hardly any core functionality left unexplained or without examples.
The section on security is also useful, especially since it does a good job of explaining the servlet security model by design and then cleanly integrates it with JSF, through both container-managed security and application-managed security.
The only complaint I had about the book was that it was too short: the examples of the components in the various reference sections were not complete enough. In particular, the Tomahawk references (the MyFaces AJAX extensions) were slightly out of date (hardly the fault of the book authors) but also incomplete, which made using some of the Tomahawk extensions less pleasant. It doesn't help that the MyFaces documentation itself is not as complete as one would like.
It's a credit to the authors that, at the book's weakest, it's as useful as the official documentation, and at its strongest, is easily becoming the first reference reached for.
Joseph Ottinger is the editor-in-chief of TheServerSide.com, and has extensive experience in server-side technologies ranging from Perl to Cold Fusion to C/C++ and Java.