As a long time server side Java developer who has generally steered clear of the J(2)EE standard stack of EJB, JPA and JSF, in favor of Spring, Hibernate and Struts, I nevertheless wanted to take a look at the promise of the emerging Java EE 6 improvements. My goal was to evaluate whether EJB in conjunction with JPA persistence can be developed in a style that I have grown accustomed using Spring and Hibernate. Is it possible to maximize testing and debugging activities outside the EE container with version 6?
The answer to that question for me is mixed, but Beginning Java EE 6 with GlassFish came through in helping me make the evaluation. I didn't need a soup to nuts definitive guide, but a book with some breadth to be able to evaluate the platform without having to become an expert in the process. It provides enough material in each major subject area to get a simple but non-trivial example program running. In fact the chapters on JPA are fairly comprehensive and could be a nearly complete reference for building out a small to medium admin interface for a database.
It is definitely a "Beginning" book for seasoned EJB and JSF developers, as they will likely not find enough new material to warrant purchasing the book. I would not say this book is appropriate for programming beginners in general, or even experienced programmers migrating to server side Java for the first time. (Perhaps 'Introducing' in place of 'Beginning' would have conveyed this better). It can be daunting to simply set up the requisite software packages before you can create your first entity class or session bean. Author Antonio Goncalves does an excellent job outlining the necessary setup steps, and doesn't leave out important aspects, such as assuming the reader already has the JDK installed. You will likely have to consult other resources to complete the set up of your environment, but that's to be expected in today's multi-layered and polyglot programming paradigms.
In the past I have often shied away from Novice to Professional Apress titles, because they often are padded with screen shots and unabridged XML configuration. Goncalves sprinkles in a few screens showing the set up of glassfish, and throughout the book, the example code snippets are concise but complete enough to illustrate the narrative.
A very key piece of technology used throughout the book that is not specified by JEE 6, nor is part of GlassFish, is the use of Maven. As an experienced Maven user, this was a significant advantage for me. I'm not sure how much of a distraction this will be for the many developers with no Maven experience, who want to get up to speed quickly. Using Maven meant the book does not have to devote any space on setting up an IDE, but the reader will be on his own to figure out how to import the mavenized sample code into an IDE.
As for the sample code, the source code is available for download on Apress. It is solid code until chapter 13, 14 and 15. I encountered compilation errors for these chapters' samples, which leaves the impression that not enough time and effort was expended to do justice to the topics of JMS, Web Services and REST.
If I have one important critique of the book (and perhaps it's really a critique of EJB/GlassFish) is that the JUnit tests utilizing embedded GlassFish do not work. This problem lead me to the mixed review I alluded to in evaluating EJB 3.1. My current perception (which may or may not accurately reflect reality) is that testability of EJB is still not up to the level I expect, given my experiences using Spring over the last five years. I doubt this situation is the fault of the author of this book, but not enough discussion was devoted to describing the complexities of running GlassFish in embedded mode, even (or especially) for an introductory level book.
Overall, Beginning Java EE 6 with GlassFish accomplishes its mission, and I can recommend the book for a senior developer or architect doing technology evaluations or other developers needing to get up and running quickly.