Book review: JBoss RichFaces 3.3

Several weeks ago Packt Publishing marketing department came into contact with me in order to review a book they've just delivered: JBoss RichFaces 3.3. As you can see if you read my blogs, I've been using that technology for several years now and I was obviously interested on the book, so I accepted their invitation.
The company I work for runs several projects involving RichFaces now. We like using bleeding edge technology, we are JBoss partners, early adopters in general. For the last weeks me and my team have been using the book as reference for our work, and I'll summarize here our conclusions.
First of all I must admit I don't use to like technical books, so I'll be a hard reviewer. Don't get me wrong, there're many great ones out there ("In Action" series, for example), but it's difficult to catch my eye. Every open source project I'm user of is well documented. Seam, RichFaces, jBPM... Almost every JBoss project have great documentation: good reference manuals, javadoc, and even better source code. I'm not interested on undocumented software. For example, I quit Dojo framework because of that. I love deep, classic books, like Peopleware or The Mythical Man Month, books that would be read for decades. Technical books, on the contrary, have shorter lifetimes.

The book

The book guides the reader into building a new project from the very beginning (environment, deployment) to the end (skinning and so on). Book structure is like this:

  1. Introduction and environment configuration.
  2. Application development.
  3. Advanced techniques: skinning, components...
  4. Tag reference.
The good

When you begin programming JSF and RichFaces things can turn complicated. There's not "jsf-blank.war", and IDE support isn't always that useful. This book focuses on teaching you on building up an application from the beginning, and I think it succeds on it. You can think on this book like a detailed tutorial which will teach you on everything you need to begin working with RichFaces.
Java Enterprise Edition developing can be cumbersome: it takes a while to begin, and you need many components to work together until you get the app running. The book helps you on configuring RichFaces several ways: on its own, with Seam, with Facelets... It's quite complete.
It covers almost everything of the framework. If you follow it you'll use most components and features. Even more valuable, you'll learn to use the right tool the right time.
This is probably the book I'd have needed two years ago when I began using RichFaces. Blogs and online tutorials are not this comprehensive.

The bad

This is a learning book. It's aimed on people who wants to learn to use RichFaces, and it's good on it. But it's not that useful if you are already using it, or if reference documentation is good enough for you.
Sometimes it looks like a reduced reference version. For example, I'm using CDK (Component Development Kit), and its chapter is smaller and less detailed than the original reference. Sometimes this detail pruning leads to errors (version numbers is not something you should ignore when you're working with Java).
The appendix, the component reference, is useless. It's just a list of available components with an small paragraph. It shouldn't have been included.

The ugly

IMHO RichFaces is the best Ajax JSF library right now. 3.3.x branch is stable, mature and full featured. Nevertheless, JSF 2.0 is almost with us, and it will lead to RichFaces 4. It will be a big leap forward for standarization and ease of use. If you learn RichFaces 3.3 now you'll find 100% of it valuable for the following version, but the book loses a little bit of its value as reference.

In sort

In sort, if you want to learn RichFaces right now (wise choice) and you want to be guided through it, this is the book for you. If you're already a RichFaces developer, probably not.

You can download a sample chapter: RichFaces Skin Customization.

PD: as you will have probably realized, I'm not a native English speaker. Please let me know every language mistake I've made ;).