Tuesday May 06, 2014

New book: Java Performance - The Definitive Guide

"Don't lower your expectations to meet your performance.
Raise your level of performance to meet your expectations."

(Ralph Marston)

As its title imply "Java Performance: The Definitive Guide - Getting the Most Out of Your Code" covers Java Performance at large.

Let's start with the beginning. In order to isolate any potential performance issue, you first need to be able to accurately measure performance. The first part of the book discusses general methodologies for testing Java applications. It also discusses the usual pitfalls of Java benchmarking.
Performance analysis is about about observing and understanding what an application is doing so the book continues with an ideal Java Performance Toolbox. It covers some of the tools available to monitor Java applications. It should be mentioned that Java Mission Control that has been recently added to Java SE 7 (starting with update 40) and Java SE 8 is also discussed.
The book then dive into Java performance by discussing in great details two key fundaments that are the JIT (Just-In-Time) compiler and the Garbage Collection.
The remaining chapters focus on best practice uses of various parts of the Java platform. It's the platform at large as it goes from memory use with the Java heap, native memory use, thread performance to Java EE, JPA and JDBC!

Scott Oaks, the author, has spend more than 15 yeas in the Java Performance Group at Sun and now at Oracle. I know Scott since more than 12 years, he is clearly someone that understand all the aspects related to Java Performance, from measuring to tuning. And not only that, Scott has also the capacity to distillate sometime complex technical aspects into easy to understand points. From a Java EE point of view, the book doesn't obviously covers the complete platform (see the ToC here) but nevertheless the book is a really a must-read for anyone writing Java applications based either on Java SE or Java EE. And the fact that the book also discusses Java EE and some of its APIs is certainly a nice additional bonus for any Java EE developer!