I remember very well my first contacts with Java EE technologies during my studies: More than a decade earlier, Java EE still was branded “Java 2 Platform, Enterprise Edition”, out in its early 1.4 version, and dealing with it for the first time left me rather stunned, facing a plethora of technical acronyms, APIs and technological and architectural concepts. Back these days, I would surely have paid money to have a really good introductory textbook, unfortunately, there were few (none?) at this time. By now, this has considerably changed.
In its recent releases (Java EE 5, Java EE 6), the enterprise development platform based upon Java technology has not just seen substantial improvements in many aspects. By now, there also are some noteworthy books out there to make starting over with these technologies (which still are complex in some ways, same as the problems they try to address are pretty complex at times). Then and now, a pretty good choice for starters used to be “Java EE 5 Development with Netbeans 6” by David Heffelfinger, published by Packt Publishing. Heffelfinger, who obviously has quite a history designing and developing Java applications, has now done a thorough update of this book to deal with new issues and technologies introduced by Java EE 6 and Netbeans 7. So, how does the book do?
Overally, while following through this book, it is obvious that Heffelfinger has quite a bit of experience in writing introductory text books. Clearly outlined, the reader will make its way through roughly 400 pages of step-by-step introductions in 11 chapters, covering most of the relevant technical aspects of Java EE technology, each of them again being clearly structured to guide a Java EE newcomer through both gaining a fundamental technical understanding of what’s going on at all and to how to make best use of the two tools at hand (the Netbeans IDE and the Glassfish Application Server) to get something done really fast. Likewise, updating the book to the current state of things in both technologies brings in coverage of newer Java EE features like Contexts and Dependency Injection (CDI) or RESTful web service (JAX-RS), which is a good thing as it might also make the book interesting to people already slightly familiar with earlier versions of Java EE wanting to extend their knowledge.
I haven’t tried most of the code samples, and, given I did some Java EE work myself too during the last couple of years, maybe I’m not really the one to judge whether an introductory book is likely to meet the demands of its designated target group, but, no matter whether talking about the Java EE 5 or the Java EE 6 version, in any situation I also learnt a thing or two especially on features and functionality in Netbeans that I wasn’t so far aware of yet I possibly should know about.
Yet, despite considering “Java EE 6 Development With Netbeans 7” a worthy read, there are a few things I stumbled across which in my opinion seem worth mentioning or thinking about, maybe:
At first and foremost, then and now I wonder what the actual target group of this book is. In some place I found the description of the book aiming at…
1 Java Developers who wish to become proficient in J2EE 6 and NetBeans.
2 NetBeans users who want to leverage their IDE to develop J2EE 6 applications.
3 Those who are J2EE 6 developers who wish to learn how to effectively make use of NetBeans for that job.
Reading the book, it indeed seems to try to balance somewhere in between these three groups, which is thoroughly difficult assuming that someone who already has a rock-solid Java EE background searching for a good tool might want to be provided with completely different information than someone who has been working with Netbeans and Java SE for quite a while and now wants to deal with Java Enterprise technologies. Looking at things from a slightly “intermediate” point of view, I think users in group (3) might be disappointed because, ultimately, the amount of real in-depth information on effective Netbeans usage remains uncovered in this book – which then again is of little surprise in order to keep the page count at a reasonable level (you should however make sure, nevertheless, to read the “NetBeans tips for effective development” paragraph of Chapter 1). Same way, if you’re familiar with Netbeans and Java SE and new to Java EE, you’d possibly like to have some more “background” in some of the chapters outlining technical concepts in order to not just follow the learning trail but better understand the things actually happening in there. But again, this is something not really too easy with regards to the size of the book. No matter how, and nevertheless: In the next release of this book, I surely hope to see a drastically reduced introductory “chapter 1” – assuming that the ones dealing with this book do have experience either with Netbeans already, or at least with Java development in general, should be without too much of an explanation be capable of downloading and installing Netbeans and the tools required. The pages covering these aspects in a rather verbose way easily could be used better.
The same, in my opinion, goes for JSP and JSTL development. Sure, it does belong to Java EE, and at some point of course deciding what needs and what does not need to be part of such a book is the authors job. I would not plead against including servlet technologies as it is fundamental at least to Java EE web tier, but if having to choose between, in example, JSTL and learning about Java Connector Architecture, my choices would be pretty clear. 😉 Maybe in future versions of the book, restricting these topics to servlets and JSF and pointing out that Java EE is not exclusively about building Java based webapps would be beneficial at least to me.
Finally, concluding this: I miss any coverage on Apache Maven in here. Sure, using Netbeans to build Java EE applications works completely without making things more “complex” by adding Maven as build tool. But then again, in many respects Maven does a few things in a pretty smart way, maybe smarter than the standard Netbeans project structures built on top of Apache Ant, and the Netbeans tooling for building Maven based applications is at least on par with the “standard” Ant based projects, so at least in terms of effectively working with the IDE, maybe it would have been at least worth mentioning. After all, with Java EE 6 building Java Enterprise artifacts with Maven also has become a bit easier due to having more of the relevant libraries available in public Maven repositories. But maybe this too special already for an introductory book.
In the end however, this doesn’t in my opinion too much change the rather good impression I used to have of this book even while looking at its Java EE 5 / Netbeans 6 “version”. Getting back to where I started: As Java EE is supposed to address a somewhat complex issue (building and running enterprise-grade applications), the technology in itself provides a certain complexity and, thus, comes with an initial learning curve that can be challenging in mastering all you need to get going. Having at hand the “full” Netbeans/Glassfish bundle and this book will help you mastering this learning curve – it will provide you with all you need to quickly get started, to quickly get your feet wet, to get something done, write code, run applications and see some results. Sure, there’s things aplenty to be learnt completely outside the scope of this book, but in order to get started, this doesn’t yet matter as long as you are willing to read more than just one book. But if you’re about wanting to get started with Java Enterprise development in a quick and hopefully not too frustrating way, “Java EE 6 Development With Netbeans 7” makes a pretty good first book to be read on the issue and, thus, is definitely worth being recommended.