Last October, Packt Publishing (a UK based publishing company specializing in focused IT books) extended the offer of reviewing titles from their open source selection. I accepted and decided on the following two titles:
- "JasperReports for Java Developers" by David R. Heffelfinger
- "Java EE 5 Development using GlassFish Application Server" by David R. Heffelfinger
After posting a review of the latter last month, I'm following up with that of the former.
As I stated in my first review, my intention was to both read and review the title from a developer's perspective. Especially considering the fact that the book is aimed at Java developers wishing to become proficient with JasperReports. The book's theme centered on steering the reader "...through each point of report setup, to creating, designing, formatting, and exporting reports." Its author, David Heffelfinger, earned a Masters degree in Software Engineering from Southern Methodist University and is currently editor in chief of Ensode.net, a web site about Java, Linux and other technology topics.
"JasperReports for Java Developers" proved to be a well put together title that provided sufficient support for a JasperReports newbie, like me, while also making good as a source of reference content that might be useful for non-beginners. Nonetheless, there were small gaps (mostly version differences and functionality that is currently available) attributable to the fact that the title was first published in 2006 and that JasperReports has continued as a steadily maturing open source framework since that time. This is to be fully expected and the book's coverage didn't directly suffer as a result.
The first chapter provided a good introduction as well as instructions for getting started with JasperReports including a useful breakdown of class library dependencies and the typical workflow associated with creating a report. In comparison to JasperReports documentation, which is high quality itself, there wasn't much missing/different. The second and third chapters covered the embedding reporting capabilities into Java applications and creating your first report. It was important for these to provide sound, comprehensive coverage of adding and using JasperReports' capabilities from a Java developers perspective if only because this is the library's primary use among its target audience. Both succeeded largely in providing a good foundation.
The second chapter was essentially seguing to the next one which covered the tasks associated with creating your first report. As a result it was brief and to the point: instructions on downloading, environment setup plus a 'scan' of the JasperReports CLASSPATH in the form of a list of required libraries for report compilation. Chapter 3 provided newbie instructions on creating a report fit with insight on report template creation, preview, compilation, generation and display. There was also a section on using ANT to compile a report programmatically. Not to nitpick, but I felt the part detailing the elements of a JRXML report template should have been at the beginning of the chapter instead of the end, especially considering that understanding its importance is paramount to grasping JasperReports.
At this point in the book I began to instinctively look for follow-up exercises at the end of each chapter. However, none were provided. They always help to ensure that important topics weren't missed in would have been a practical edition to a developer-centric book such as this one but were absent.
Chapters four and five (pages 55 -114) were two of the strongest throughout the entire book. In the first of those two, the concept of dynamic database reports were introduced and covered. This, obviously, is key topic since most reports aren't static and leverage the use of a database. In this light the chapter did a solid job of covering the same bases as its predecessor including ample text from various code examples interspersed with highlights, graphics and guidance. The sections herein provided a nice set of walk-through oriented content that was helpful in getting a grasp of the subject matter. The next chapter extended the topic of using databases by covering working with other datasources (empty, map, java objects, TableModels, XML and custom). Additionally, the guidance on implementing the JRDataSource interface was particularly informative and appropriate at the end of the chapter.
Neither of the next two chapters (six and seven) disappointed. Chapter 6 detailed the layout and design principles of JasperReports including how to create more complex reports by introducing background images/text and subreports. Each of the notable elements of report design and layout were mentioned as well as how to accomplish associated actions like adding multiple columns and grouping report data. This chapter went into great detail to attempt to portray the nature of JasperReports' extensive reporting capabilities while providing a handle on learning to effectively manipulate them. Chapter 7 was structured in the same manner only it focused on charts and graphics.
Through the end of the book other features, exporting to other formats, using iReport and integration with other Java frameworks were covered. Yet after finishing the 11th and final chapter the Index followed immediately which served as an abrupt end to the flow of the previous chapters and the learning experience, in my opinion. Personally, I expected more auxiliary information but maybe that's just my perspective.
Overall, I found "JasperReports for Java Developers" to be well written and informative in the same vein that "Java EE 5 Development using GlassFish Application Server" was. The book was able to maintain a walk-through oriented tone all throughout without sounding like a traditional developer's guide, all in 328 total pages (index included). Despite the fact that I felt there was a need for something along the lines of an appendix to supplement and better connect the high volume of examples with essential learning keys, the sections within each of the chapters were usefully phrased as if they were answers to a set of FAQ's. When coupled with a high degree of precision in content ordering this led to an instructive reading experience that is ideal for those looking to become familiarized with JasperReports.