Be a Better Java Programmer: A Reading List by Binu John
Looking for a different subject? Take a look at a directory of all of our Developer Reading Lists.
Effective Java, 2nd Edition, by Joshua Bloch
This excellent guide contains seventy-eight best practices regarding the use of the Java programming language and the core libraries. The rules, even the more complex ones, are explained in a easy to understand fashion enabling developers to apply it in practice. I use this book as a reference and revisit sections that are relevant to the project that I am working on. This is a must read for every serious Java developer. Also available in Safari Books Online.
Java Concurrency in Practice, by Brian Goetz et al.
This book is required reading for any developer who does multi-threaded programming in Java. It provides an in-depth view on different aspects of concurrent programming and contains plenty of code samples that highlight practices that should be followed as well as avoided. As a performance engineer, I found the performance section to be especially useful. The advanced topic section covers issues that will be of interest to experienced developers and includes items like RentrantLocks, Atomic variable classes, and the Java Memory Model. Also available in Safari Books Online.
Java Threads, by Scott Oaks and Henry Wong
This book provides a good introduction to Java threads for beginning and intermediate Java developers. It covers several important topics related to threading including thread creation and destruction, data synchronization, deadlock detention and prevention, thread pools, etc. This is a good primer for developers before they move on to more advanced concurrency topics.
High Performance Web Sites, by Steve Souders
High Performance Web Sites provides fourteen easy to implement rules for making web pages load faster. Since most of the page load time is spent at the client side, it is essential that all web developers understand these best practices. This is a must read for any enterprise programmer who cares about the performance of their web site. Advanced web developers may want to read the book Even Faster Websites for additional performance optimization hints.
This comes as a set of two books, Volume I - Fundamentals, and Volume II - Advanced Features. Volume I is recommended for people who want to learn the Java language. There are plenty of good examples as well as tips to make the learning easier for C++ developers moving to Java. The eighth edition covers Java 6 and is a good source for experienced Java developers who want to come up to speed on new APIs and language features. Volume II is suitable for programmers looking to learn more advanced features of the Java language. Also available in Safari Books Online: Volume I, Volume II.
Binu John, co-author of Java Performance, is a senior performance engineer at Ning, Inc., where he focuses on improving the performance and scalability of the Ning platform to support millions of page views per month. Before that, he spent more than a decade working on Java-related performance issues at Sun Microsystems, where he served on Sun's Enterprise Java Performance team. John has contributed to developing industry standard benchmarks such as SPECjms2007 and SPECJEnterprise2010; published several performance whitepapers; and contributed to java.net's XMLTest and WSTest benchmark projects.