Skip to content
Cover of Java Concurrency in Practice by Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea
#1

Java Concurrency in Practice

Best for: Developers who need a rigorous foundation in Java concurrency

Written by Brian Goetz together with several members of the JSR-166 expert group (including Doug Lea and Joshua Bloch), this book breaks down the theory and practice of writing correct, thread-safe Java code — covering the Java Memory Model, locks, atomics, and the java.util.concurrent library. It remains the book many teams point new hires to before they touch multithreaded code. Best suited for developers who already know core Java and want a rigorous mental model for concurrency rather than a quick tutorial.

Cover of Java Performance: In-Depth Advice for Tuning and Programming Java 8, 11, and Beyond by Scott Oaks
#2

Java Performance: In-Depth Advice for Tuning and Programming Java 8, 11, and Beyond, 2nd Edition

Best for: Engineers tuning JVM performance and GC behavior in production

Scott Oaks explains how the HotSpot JVM actually executes and optimizes code, then applies that to garbage collection tuning, JIT compilation, threading, and I/O performance. This second edition updates the original guide for Java 8 and 11, including newer collectors like G1. It suits engineers who need to diagnose real production performance problems rather than follow generic tuning checklists.

Cover of Optimizing Java: Practical Techniques for Improving JVM Application Performance by Benjamin J. Evans, James Gough, Chris Newland
#3

Optimizing Java: Practical Techniques for Improving JVM Application Performance

Best for: Practitioners who want a tooling-driven, evidence-based approach to JVM tuning

Evans, Gough, and Newland lay out a measurement-first approach to Java performance work, showing how to benchmark correctly, read JIT compiler output, and reason about memory and concurrency costs before making changes. The book leans on tooling — JITWatch, profilers, flight recorder — more than a typical tuning book, reflecting the authors' backgrounds in JVM tooling and low-latency systems. It's aimed at practitioners who want a repeatable, evidence-based process rather than folklore.

Cover of Java Performance Companion by Charlie Hunt, Poonam Parhar, Bengt Rutisson, Monica Beckwith
#4

Java Performance Companion

Best for: JVM specialists debugging GC internals and using the Serviceability Agent

Written by current and former Oracle JVM engineers, this book picks up where general performance guides leave off, going deep on the Garbage-First (G1) collector's internals and the HotSpot Serviceability Agent for postmortem diagnosis. It's less a general tuning primer and more a specialist reference for engineers who already understand JVM basics and need to reason about GC log internals or debug a live JVM with its own serviceability tooling.

Cover of Java Generics and Collections: Fundamentals and Recommended Practices by Maurice Naftalin, Philip Wadler, Stuart Marks
#5

Java Generics and Collections: Fundamentals and Recommended Practices, 2nd Edition

Best for: Developers who want to master Java's generics and collections type system

Naftalin and Wadler give one of the clearest explanations available of how Java generics actually work under erasure, including the wildcard rules and corner cases that trip up even experienced developers, paired with a thorough tour of the Collections Framework. This second edition brings the material up to Java 21, adding coverage of sequenced collections and how streams and lambdas interact with generic code. Good for developers who use generics daily but want to understand the type system well enough to design their own generic APIs.

Cover of Netty in Action by Norman Maurer, Marvin Allen Wolfthal
#6

Netty in Action

Best for: Developers building high-throughput, non-blocking network servers in Java

Written by one of Netty's core maintainers, this book explains the asynchronous, event-driven Netty framework that underlies many high-throughput Java network servers — channels, event loops, and codecs for building non-blocking clients and servers. It favors hands-on examples over API reference dumps, showing why so much Java infrastructure tooling is built on top of it. Best suited for developers who already write concurrent Java and need to build or maintain high-performance network services.