Book Review for "Java Performance, the Definitive Guide"
Subtitle: "Getting the most out of your code"
State: "Early Release. Raw and Unedited"
As the title tells, this book is ambitious in scope. Calling something 'The Definitive Guide' is a bit presumptuous, but the author (Scott Oaks) has credentials to match anyone in the workspace. This book is in 'Raw and Unedited' form, which means it's not yet a finished work.
So, what's here?
The first chapter outlines the target platform (Java 7), JVM tuning flags, and some very general best practices for obtaining good performance. Not much deep-dive material here.
Chapter 2 categorizes types of benchmarks and provides different things to measure. I found this chapter a little long on the academics, probably more applicable to professional testers than it is to garden-variety application developers. All things considered, not my favorite chapter.
Chapter 3 covers the Java performance tester's toolkit. It contains a good overview of tools provided by the operating system (including many for Linux). The Java monitoring section tells us what the JVM can tell us about itself. There's a meaty section on profilers, and finally a section on a propietary tool Oracle provides to users that choose to pay for Java 7. This chapter held quite a few items of interest for me.
Chapter 4 was devoted to the Just-In-Time compiler. JIT is of great importance to Java performance, and this chapter provides a wealth of information that could only come from those with very deep knowledge. In the 'acknowledgements' section of the book the author tells us he used inside contacts at Sun/Oracle to pull this book together, it would have to be these kinds of people that assisted here. Good stuff.
The 5th chapter is about Garbage Collection and Garbage Collectors. This information seems to change frequently as Java updates, so the value of this chapter might be perishable. This information is also similar to material that's readily available all over the internet, so it didn't grab my attention like the previous chapters.
The final verdict: For a work in progress, I found this book to be rich in good content and fairly refined for the 'raw' label. For those seeking improved Java performance, it's a worthwhile read. I look forward to seeing the completed product.
The book can be seen here.
Happy (Performant) Coding!