I’ve spent some time trying to find technical books that are good next level reading after classics like Effective Java and Design Patterns (Gang of Four). These books are must reads for any engineer that is serious about improving their skills, but where should a Java developer look to after these? Below are a few more advanced books that I’ve found especially useful for Java software construction. Note: purchasing items through these links supports this website.
- Java Concurrency in Practice contains a thorough treatment of threads and concurrency in Java. It is essential reading for anyone writing multithreaded Java code (i.e. pretty much anyone who writes Java). Java Concurrency in Practice covers the details of Java’s built in concurrency utilities such as thread pools, executors, semaphores, and synchronization. Equally important are the discussions of how and when to use these tools to maximize throughput and avoid deadlock.
- Java Performance: The Definitive Guide is great for learning the details of how your code is actually run on a Java Virtual Machine. One of the best take aways from Java Performance is understanding how different garbage collectors work and how to tune them. Learning what factors matter for performance in general and how to scientifically improve the performance of your application in particular are also covered. You should never change a line of code for performance reasons until you have read this book (likely the book will tell you that you still shouldn’t change it).
- Java Puzzlers: Traps, Pitfalls, and Corner Cases is a fun look at the ways the normally play-nice Java will hurt you. Despite the name Java Puzzlers is full of information that is useful on a day to day basis. To write high quality Java code you need to understand the language’s quirks and corner cases, and this book is full of them. If your interests tend towards analytics and machine learning the many puzzlers about Java’s numeric types are especially relevant.