Effective Java — Joshua Bloch, Pearson Addison-Wesley 2018 (3rd ed.), ISBN 978-0-13-468599-1
This is not just the best book on Java, but one of the best I’ve read on any programming subject. Every Java developer will benefit from Bloch’s solid advice and thorough exploration of language and library quirks, on a par with classic namesake Effective C++. Unlike that collection of arcana, however, Bloch’s lucid writing and broad coverage of essentials also make Effective Java a great introduction for users of other languages. Buy this book as soon as possible, even if you don’t buy any other Java books.
The third edition adds 50 pages with twelve new or substantially enhanced sections on features introduced by Java SE 7 through 9, as well as some unrelated additions and minor revisions throughout the book. Dustin Marx has compiled all these changes in detail. Coverage is up to the usual high standard, with the exception of Java 9 modules which receive just a single page; Bloch argues that their usefulness beyond the JDK itself is still unclear. All told this is a welcome update of an outstanding book.
(See Developer Books for my complete review archive.)