Core Java SE 9 for the Impatient — Cay S. Horstmann, Pearson Addison-Wesley 2017 (2nd ed.), ISBN 978-0-13-469472-6
The Impatient series condenses the traditional monumental Core Java tomes (2,072 pages for Java SE 8) into a single book a quarter the size – 538 pages for Java SE 9, 480 pages for the first edition on Java SE 8. Rather than covering most of the standard library and JDK toolset, For the Impatient focuses on essential functionality that should be relevant to any project, whether end-user application or web server component. Several big Core Java topics are largely or entirely absent, including graphics & user interfaces, networking, security, databases, and native methods. The remaining coverage is abbreviated as well.
While For the Impatient is neither a beginner’s tutorial nor an exhaustive reference, the covered subjects are for the most part sensibly selected and treated with surprising thoroughness. Horstmann crams an incredible amount of essential knowledge and useful tips into the available space. There are excellent concise explanations of complex issues such as higher-order functions, race conditions, stream operations, and wildcard variance in generics. The second edition was revised throughout and adds a chapter on the new module system – once again the best description of this subject I’ve yet seen.
(See Developer Books for my complete review archive.)