Java Power Tools (OReilly) - review
If you had to ask me which one is your favorite (all time) java related book, until now I would point to Java Cookbook. After reading Java Power tools by J.Ferguson Smart I would reply ,it's Java CooBook and Java Power Tools.
So what is all about? In order to develop java applications and to be more precise enterprise level Java applications, we use several tools in different phases of the development process. We use tools for helping us build our application, tools for storing our code and keep track of the changes, tools to test, some other to check our code and preserve quality, tools to keep track of our bugs and issues. We are talking about a complete eco-system of technologies and frameworks that need to be fine tuned and integrated into our development process in order to help us reach our final goal, which is to deliver a fully functional product / service.
Introduction For the very first time there is a book that lists and elaborates on almost all the major tools that fit into that process and are widley used by the develoeprs worldwide nowdays. For sure some of you, might already have dedicated books for some of them (e.g. Ant, Maven or others), Java Power Tools does not promise to be the absolute reference for all the technologies that it lists -meaning that it's purpose is to explain the major role of each tool ,elaborate on it's major usage with nice hints and tips and then provide ideas and tips of how this tool can be integrated with others in order to provide a better development experience.
That is the best aspect of this book actually, it does not try to be a complete reference of each of the 15+ tools that lists but at the same time if you go through the separate chapters you will find enough information on how to get started, be productive or even integrate. Well balanced I would say.
Stucture of the book When it comes ot it's structure, it is consisted of seven thematic sections - each one has reference to one or more related tools / technologies.
The first one is about build tools and the tools listed are Ant and Maven. I really liked the information regarding their integration. The chapter around Maven is considered more complete.
The second section is about Version Control Tools and provides reference to CVS and Subversion. Since Subversion now days is considered the number one choice for Version Control on new systems, the book provides a quite complete chapter on it's installation, usage and integration with other technologies. Very up to the point chapter.
Continuous Integration systems are listed in the third section. The listed tools are Continuum, Cruise Control, LuntBuild and Hudson. Since I am already a Continuuum user I can verify that the related chapter was quite complete for starters and I really liked the fact tha the author has provided a seperate chapter about Hudson (which is quite new). I also had the chance to consider LuntBuild which I have never used before.
The fourth section is all about unit testing. Listed technologies are JUnit (of course), TestNG and Cobertura(code coverage). Most of us already hold dedicated books for JUnit or TestNG eventually the provided chapters had enough information to get you started. The chapter related to cobertura was one of the most interesting.
A list of tools about integration, functional and perfomance testing - is covered in the fifth section. Listed technologies are StrutsTestCase, DbUnit, JUnitPerf, JMeter, SoapUI and JDK profiling suite. I would like to see some info regarding Selenium and sahi (which are widely used- maybe on the next update).
Section six is about quality metric tools.One of the best sections of this books It lists references to tools like CheckStyle, PMD, FindBugs, Jupiter and Mylyn. Very up to the point references especially for the first 3 which I use in my latest projects.
Section 7 and 8 cover issue management/ documentation tools like Bugzilla and Trac. Both of them are free to use and very usefull although I think that some references for tools like JIRA and Confluence are missing - especially the first one!Maybe in the next version, I guess!
Who should read this book. Well this book can be an excellent all around - reference point for every senior developer/team leader that is currently considering the tools to be adopted in it's new project (or current one). At the same time it can be a very nice start for a junior developer that is lucking experience in such technologies.
Actually I would really recommend this book to junior people-mostly My recommendation is based on the fact that in lots of development teams, unior developers are lucking specific knowledge for most of these tools. Extra effort is required by more senior stuff to educate them and finally integrate them into the team. By reading Java Power Tools, you can speed things up, quite advanced references are provided all over the chapters, enough not only to make you familiar with the tool but to make you productive on day to day operations!
Final Comments Building a software project does not only involive writing code, there are a bunch of tools that are used teams during development. Good knowledge of most of them actually acts as a bonus for the progress and quality of the final project. Java Power tools is a nice reference to most of them. I would give it 4 out of 5 stars (just see some more additions in the future on certain sections) and of course I can consider it as personal favorite.A book that should be in the bookself of every java software house.