Sunday, January 31, 2010

JBoss RichFaces 3.3 Book Review

Boook Title

JBoss RichFaces 3.3
"Enchance your JSF web applications using powerful Ajax components"
by Demetrio Filocamo
Packt Publishing, November 2009


JavaServer Faces has been around for several years now and is an established technology for many enterprises.  Many component libraries supplement JSF to provide rich UI development to server applications.  JBoss RichFaces is one of the leading libraries in the industry and has many valuable charateristics, notably a wide variety of built in UI components and an Ajax framework.  Although I have been working with RichFaces on a daily basis for about a year now, I recently decided to pick up the Packt Publishing edition titled "JBoss Rich Faces 3.3" by Demetrio Filocamo and conduct a review.

The book aims to provide a detailed look at the RichFaces UI library and its fantastic capabilities of leveraging Ajax technology.  RichFaces not only contains fancy out of the box web components, it comes packaged with Ajax abilities to make the user experience very enjoyable.  JBoss RichFaces 3.3 explains how you can use RichFaces to enhance your application to achieve sohpisiticated UI with very little effort.  Highlights of the Ajax enabled components include: Calendar, Drag N Drop, Data Table, Rich Editor and Skinnability. 

Through several code examples and chapters that take the developer from the inception of an example application to its completion, the book succeeds by delivering knowledge to the reader.  The book not only acts as a very good reference to any Java developer, but also as a valuable learning resource. 

Positive Aspects of the Book

The focus of the book is on enhancing JSF applications by adding Ajax capabilities, but without the nuisance of having to string code and error-proned JavaScript.  Thus, Filicamo does a good job of introducing the reader to RichFaces as a whole, and then explaining the need of Ajax in web applications.  It is important to understand the technology behind Ajax and how it integrates with JSF.  The author first presents a high level definition, then focuses on Ajax as it relates to RichFaces. This gives the reader a good platform to build on. 

For the first few chapters, the reader is guided through setting up the development environment in preparation for coding examples.  One great thing about the book is that it specifies how RichFaces is best used with the Seam Framework.  Seam is an open source integration technology which enables developers to build complex applications without the traditional pitfalls of development. In short, it binds together JSF, EJB, and JPA to enable ease of development.  Thus, Filicamo guides you on how to use seam-gen to get your Seam/RichFaces project running quickly.  He also offers support on how to use the main IDEs Eclipse and IntelliJ. 

The examples integrates several useful RichFaces components that are relevant to any project.  Surrounding each example is an explanation of how the code works and the purpose of the components.  This should allow the reader to pick up the examples and apply components to their project very quickly.  Some of the more applicable components demonstrated are: richfaces datatable, single Ajax request, regional Ajax requests, data scroller, data list, and data grids.  Others include skinnability, rich editor, upload, and color picker. These components would greatly enhance the appeal of any application. 

In addition, the book has the full code examples for download. If a user needs the full context of the code, a working example is there for reference.


Some criticisms of the book lie in the design of the examples.  While the examples are understandably elementary, they lack sound design.  The entities in the examples are not quite modeled as a domain should be, meaning Domain Driven Design is not the emphasis.  Sometimes the code could be better structured and action class names could be more descriptive. However, these perceived fallacies do not take away from the goal of the book, which is to show the effectiveness and usefulness of RichFaces. 

How to Get the Most Out of the Book

I believe this book is appropriate for a wide array of developers, ranging from novice to advanced.  If you are a developer who has not been introduced to Seam and RichFaces server side development, the code examples and explanations are an ideal introduction to get you up and running.  You can learn the fundamentals without being overwhelmed by the peripheral technologies.  If you are a more advanced developer with experience in JSF component and enterprise development, JBoss RichFaces 3.3 offers fantastic depth into the technology and its usage in applications.  You will learn a large set of components and understand how to integrate them into your UI design.

In order to get the most out of the book, I would recommended following the first few chapters closely and install all the tools and examples on your desktop.  In addition, instead of only importing the examples, I would actually code the examples by hand. This allows you to practice and innovate, while also allowing the concepts and implementation to sink in so that you know it hands down.  I did this through Chapter 5 and 6 and saw the results of a pretty sophisticated application running on my desktop.  I also felt that I had gained hands-on experience with many of the components in RichFaces, which I found valuable.

In conclusion, JBoss RichFaces 3.3 is a great resource for the developer who wants to enrich the user experience.