Book review in Java Magazine


Recently, my book got reviewed in the Dutch Java Magazine. It was a very positive review, I got 4 ‘dukes’ out of 5. A scanned version of the original review (in Dutch) can be downloaded here. An English translation is posted below.

As of December 2009 there is a new version of Java EE with JavaServer Faces 2.0. It therefore seems a little odd that still many books are published on JavaServer Faces 1.x. Like Bart Kummel’s book Apache MyFaces 1.2 Web Application Development. Fortunately this is not just another book.

Like every introductory book this book also starts with an introduction, this time of Apache MyFaces. A brief summary of this JavaServer Faces (JSF) implementation is followed by a list of the sub projects of MyFaces. Finally the reader is pointed to further extensions of JSF that are focused on extended scoping, portlet integration and validation. This tells us that we are dealing with a modern book on JSF.

As Oracle has turned a large part of their ADF component set into open source in the form of MyFaces Trinidad, it is not surprising that Oracle has also cooperated with all kinds of integration of MyFaces and Trinidad in both Eclipse and JDeveloper. The book explains in great detail how to get started with each of these IDEs. The book then shows how a developer can get to work with Maven. Fortunately, most IDEs nowadays support Maven, in spite of the author’s claim to the contrary, so that there is a free choice of IDE available. Finally a complete chapter is dedicated to Facelets. Those who cannot say goodbye to JavaServer Pages (JSP) I can recommend to read this very thorough chapter.

All the other chapters, except one, deal with the rich component set of MyFaces and its subprojects. Because Trinidad has a large number of components and options, three chapters are dedicated to this subject. And rightly so! The only part that did not surprise me was the chapter on Skinning. This remains, in my view, too complex in structure in Trinidad although I see it is less complex than what I remember from earlier implementations.

The last chapter is dedicated to best practices, but I have the impression this chapter should have been called ‘Miscellaneous’. The chapter deals with a number of general JSF points in a MyFaces jacket. However, the book is full of best practices and that alone makes reading the book more than worthwhile.

The book Apache MyFaces 1.2 Web Application Development is more than a ‘getting started with’ book that I enjoyed reading. The author writes well and shows a very thorough knowledge of JSF in general and MyFaces in particular. That he sometimes moves over useful hints rather quickly will not be held against him by those with a little experience in JSF.

What might scare off a beginner in this subject is the early introduction of a dedicated component library in the code examples. If you intend this as a reference book, the examples may be a little difficult to follow because of this. This means you will have to read the book as a whole which gives you a lot of information for your money if only because the excellent hints and best practices found throughout the book.


3 responses to “Book review in Java Magazine”

  1. INFO: Server startup in 3073 ms

    Feb 27, 2011 7:02:26 PM org.apache.catalina.core.ApplicationContext log

    INFO: No state saving method defined, assuming default server state saving

    Feb 27, 2011 7:02:26 PM org.apache.myfaces.renderkit.html.HtmlRenderKitImpl getRenderer

    WARNING: Unsupported component-family/renderer-type: org.apache.myfaces.trinidad.Output/org.apache.myfaces.trinidad.Label

    Feb 27, 2011 7:02:26 PM org.apache.myfaces.trinidad.component.UIXComponentBase _getRendererImpl

    WARNING: Could not find renderer for CoreOutputLabel[UIXFacesBeanImpl, id=j_id_jsp_1927866048_2] rendererType = org.apache.myfaces.trinidad.Label

    Feb 27, 2011 7:02:26 PM org.apache.myfaces.renderkit.html.HtmlRenderKitImpl getRenderer

    WARNING: Unsupported component-family/renderer-type: org.apache.myfaces.trinidad.Input/org.apache.myfaces.trinidad.Text

    Feb 27, 2011 7:02:26 PM org.apache.myfaces.trinidad.component.UIXComponentBase _getRendererImpl

    WARNING: Could not find renderer for CoreInputText[UIXEditableFacesBeanImpl, id=j_id_jsp_1927866048_3] rendererType = org.apache.myfaces.trinidad.Text

    Feb 27, 2011 7:02:26 PM org.apache.myfaces.renderkit.html.HtmlRenderKitImpl getRenderer

    WARNING: Unsupported component-family/renderer-type: org.apache.myfaces.trinidad.Output/org.apache.myfaces.trinidad.Label

    Feb 27, 2011 7:02:26 PM org.apache.myfaces.trinidad.component.UIXComponentBase _getRendererImpl

    WARNING: Could not find renderer for CoreOutputLabel[UIXFacesBeanImpl, id=j_id_jsp_1927866048_4] rendererType = org.apache.myfaces.trinidad.Label

    Feb 27, 2011 7:02:26 PM org.apache.myfaces.renderkit.html.HtmlRenderKitImpl getRenderer

    WARNING: Unsupported component-family/renderer-type: org.apache.myfaces.trinidad.Input/org.apache.myfaces.trinidad.Text

    Feb 27, 2011 7:02:26 PM org.apache.myfaces.trinidad.component.UIXComponentBase _getRendererImpl

    WARNING: Could not find renderer for CoreInputText[UIXEditableFacesBeanImpl, id=j_id_jsp_1927866048_5] rendererType = org.apache.myfaces.trinidad.Text

    <%@taglib uri="http://java.sun.com/jsf/html&quot; prefix="h"%>

    <%@taglib

    uri="http://java.sun.com/jsf/core&quot; prefix="f"%>

    <%@taglib

    uri="http://myfaces.apache.org/trinidad&quot; prefix="tr"%>

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

    <title>Insert title here</title>

    </head>

    <f:view>

    <h:panelGrid border="1" columns="2">

    <tr:outputLabel value="name"></tr:outputLabel>

    <tr:inputText></tr:inputText>

    <tr:outputLabel value="password"></tr:outputLabel>

    <tr:inputText secret="true" ></tr:inputText>

    </h:panelGrid>

    </f:view>

    </html>

  2. Hi William,

    Thanks for your feedback! I'm sorry you feel like this. Please note that the description of the book mentions that basic knowledge of JSF is expected. However, I got very positive feedback from some beginners that used my book to get started.

    The tricky thing when getting started is always that there are so much components involved. That often makes it hard to pinpoint the problem if something gets wrong. I'm glad you found a solution to your problem. Please feel free to contact me if you get stuck again!

    Best regards,
    Bart Kummel

Leave a Reply to WilliamCancel reply