Book Review - The Well Grounded Java Developer (by B.Evans & Martjin Verburg)
It's been a long time since I bought the book, but I never managed to properly go through all the chapters, in order to provide a full review. The time has come and in the few past weeks I managed to cover all of it, make some notes and bow here I am blogging about it. I am lucky enough to get to know one of the authors. I met Martijn Verburg 3 years ago in an JUG leader's meeting in Prague. What a cool guy and charismatic tech presenter (his style is captured in the book as well). He has become famous within the Java Developer community as the diabolical developer, due to this talk. Really interesting talk and fun to listen to. I also had the chance to meet in person the other author B.Evans, during last year's Devoxx (2012). They were both giving a talk related to the new features and technologies coming with JKD7, you can find many of their talks @ Parleys .
it's more than 2 years from the official release of JDK7 aka Java 7. We can still see projects slowly migrating over (this is not an one off action anyway) but I truly consider JDK7 a milestone release. It manages to set the plot (and background infrastructure) for many additions introduced deep within the JVM (support for other JVM languages, advanced NIO, more concurrency constructs) while feed ling around with some long awaited syntactic sugar improvements (see Project Coin), that the developer community was demanding. There are many books around that try to tackle some of the aspects in the new JDK but a few that really capture the overall change on the language and tools level, go through every aspect of it while maintaining a simple and efficient way of writing. This is what it makes this particular book a must have for every java developer (experienced or not).
- Previous Experience agnostic, in other words can be red in a large context by people with small experience in the language and at the same time satisfy the needs and questions of experienced or rusty developers from previous java versions.
- It is not only about Java, at the same time it is not only about other JVM languages. The book offers chapters about the new language features (to satisfy had core Java devs), then it provides good introductory chapters about JVM languages (like Scala, Clojure , Groovy) and it concludes with some basic software engineering practice background information like model build tools, continues integration servers and related practices.
- It is pragmatic. Especially when it comes to suggesting the use of tools and languages other than Java it tries to elaborate on potential use scenarios, guide the reader on the good and bad aspects of each tool or technique, rather than being dogmatic or dictate a specific case just for the sake of it.
- It is well written, easy to go through, not 100% formal but the same time concrete and to the point, especially in technical details.
Chapters 1 to 6: are for the Java hardcore developers. A well written introduction on the new features offered by version 7. I really enjoyed chapter 5 (where they cover details of Class loading and bytecode and chapter 6, where they explain the terms and things to be considered when we try to perform - performance tuning in our application, a buzz word for may projects that some times leads to confusing results. I am sure I will keep visiting Chapter 6 in the future, in order to follow through the suggested process and hot-points :).
Chapters 7-10: Alternative JVM Languages. I have to admit I belong to the hardcore Java developers, and I still read and learn about all these languages but have not tried them in any production system (minimal exposure to systems using Groovy). I have some strong feelings about them, some are really interesting some others are boring and some others well can not understand why they have to be so complex just to make a point. Anyway I was already intrigued by Clojure and the related chapter (10) was a good way to stay intrigued. I find Groovy . groovy and the chapter helped me, renew some already established knowledge on the language. I still find Scala an awful language, in terms of syntax and eventually after covering the related material I think I will persist on my opinion : ), (I'm sorry Scala community).
Chapters 11-14: Material related to unit testing, continuous integration and software quality. I guess that a hardcore developer might think that all these are not important or assume that already knows them. Eventually that is completely wrong, and I am quite happy that this book spent a significant number of chapters to elaborate on those topics that are more relevant than ever in our development era. A well grounded java (or any discipline) developer, except his/her good skills on the actual language and framework, should have a good knowledge and attitude towards software testing, continuous integration, & quality. This is not 'an experienced onlytopic anymore, a well grounded developer, even with a few years of experience is expected to grasp the basics on that area. Really great that this book gives you the chance to deep dive on some important features and give you the basic directives to expand some more.
As I have already elaborated, I had covered some of the chapters of the book when I first bought it months ago. If I felt that it was not worth it, I would not spent extra time to cover all the material. I think it is a definite MUST buy book, that should be present in every team that is about to migrate it's code base to Java7 or all the java developers that need to refresh their knowledge about the latest developments in Java and have a look on new stuff like JVM compatible programming languages! The book can be easily consumed by junior and senior Java developers and keep them busy in several technical areas!
It is nice to be a well grounded developer :)
ps) Book's official site.