When it comes to performance tuning, you may not find many good books around. There are many good java books that have covered small aspects of performance tuning. However, none of them are sufficient. In this article, I have covered a handful books that I found were useful for practical applications.
There are many aspects of performance tuning that java developer do not understand. Having knowledge of performance tuning tools is not enough to get world class performance on a java application.
Performance tuning java applications take a lot of effort and patience. You need to have a very clear in-depth understanding of JVM architecture, Garbage collection, and multi-threading. At the same time, you also need to understand that each operating system may behave differently in a different scenario.
I have compiled a list of books that can help you speed up on learning java performance tuning. In this list have focused on the books that can cover all aspects of performance tuning a java application.
Java Performance: The Definitive Guide
(By: Scott Oaks )
This is 400 page book is a must have for java engineers. The book is completely focused on java performance tuning approach and details. It highlights the basics of performance tuning including some key concepts such as micro-benchmarking, throughput and response time.
The author has covered multiple aspects of Java application tuning including garbage collection analysis, multi threading concepts, memory optimization techniques and tools to do performance improvements.
It has a detailed explanation of garbage collection algorithms that can help you understand GC tuning better.
Java Performance
(By: Charlie Hunt, Binu John )
This books provides numerous details about JVM and performance tuning tools. This is book is biased towards Oracle products therefore non-oracle JVM users may find it less connecting.
The author has tried covering performance tuning, profiling, and performance benchmarking topics in detail.
The books a lot more text and less code. This makes it an intense read, however you may be able to find a lot more details about JVM architecture internals in this book.
Java Performance Tuning
Jack Shirazi, the author of this book is an expert at performance tuning java applications. He has included many real life and practical examples in this book that will help any java developer.
Topics like object creation, I/O, and exceptions are covered in depth.
There are readers who got benefitted in real production application performance using the tips mentioned in this book.
Apart from specific tips this book also have some general advice that can be used a reference for any experienced or beginner level java programmer.
Systems Performance: Enterprise and the Cloud
(By: Brendan Gregg )
Author of this book, Brendan Gregg is prefessional performance architect. The book is mainly focused on software performance in general, therefore it is not very specific to Java programming. However, this does not make it less valuable for the java engineers. The concepts and ideas about overall system performance are very valuable to any software developer.
I think this book is a general must have book for any programmer to refresh on performance tuning applications agnostic to any specific technology.
The book goes a lot more in depth at the same time its simple read. It does not require a lot of experience and background to start learning.
Java Concurrency in Practice
(By: Tim Peierls, Brian Goetz, Joshua Bloch, Joseph Bowbeer, Doug Lea, David Holmes )
Multi threaded programming is java is much more difficult than it looks. This book is a must read for any java programmer before jumping into writing a concurrent java application.
In theory, multi thread programs can achieve a lot more results. However, in practice there are a lot of difference reasons it fails. This book is focused on doing it right.
The book starts with the basics and builds it up to very advanced topics. It includes best practices and code example that you can use for your learning.
Performance Analysis for Java Websites
(By: Stacy Joines, Ruth Willenborg, Ken Hygh )
As the name suggests, this book is completely focused on java based web applications. I think its a very practical book that covers performance tuning challenges in a vendor neutral way.
The examples and code snippets in this book are handy and easy to connect. This book covers pragmatic solutions and approaches to solve performance, latency and throughput issues in a typical corporate infrastructure based application.
Java Nio
(By: Ron Hitchens )
Java IO has been slow for long time. The NIO (new IO) package on java introduces a better and faster way to write efficient IO bound java programs.
If your application is using legacy java.io package, moving to NIO may be a big performance winner for your application.
Writing good NIO code is not easy and requires a lot of understanding of new API and design patterns. I recommend this book for getting started.
Summary
Tuning any software is not an easy task, especially when the user expectations are high. In recent years users are a lot more impatient. A faster application may mean a lot more business to you and your company.
What is your favorite performance tuning book for java ? Please share in comments.