Core Java, Volume I: Fundamentals — Cay S. Horstmann, Pearson Education 2018 (11th ed. for Java SE 11), ISBN 978-0-13-516630-7
Core Java, Volume II: Advanced Features — Cay S. Horstmann, Pearson Education 2018 2016 (11th ed. for Java SE 11), ISBN 978-0-13-516631-4
These two 900-page tomes originated as Sun’s official guide to the Java platform and continue to serve that role for Oracle’s JDK releases. Readers should have some programming experience, preferably C/C++ as one of Core Java’s strengths is highlighting the semantic differences between these syntactically similar languages. Horstmann thoroughly covers not only JVM fundamentals and Java language features, but also external aspects ranging from JAR packaging to native interoperation, as well as many important standard library frameworks.
Due to a new release cadence after Java SE 8, this edition covers the next three Java versions including the current long-term support release, Java SE 11. The only substantial new feature in all three versions is the Java 9 module system which got its own 30-page chapter. Nevertheless, Core Java is nearly 250 pages shorter than the previous edition which had already dropped coverage of Distributed Objects (RMI) and JavaBeans components. One obvious cut was the chapter on Deploying Java Applications since Java 11 removed the deployment stack.
For less obvious reasons, Swing/AWT suffered the rest of the damage. Gone are the introduction to Swing’s Look & Feel mechanism – confusingly still referenced elsewhere! – as well as Volume II’s sections on lists, layers, progress indicators, special panes, advanced text components, and platform integration including the clipboard and drag & drop. Given the extent of these cuts, it is unclear why any Swing/AWT chapters remain at all. Ideally the 10th edition’s coverage should be republished as a separate book. Meanwhile all GUI developers should keep Volume II of the 10th edition indefinitely.
There are also some defects regarding Java SE 10 and 11, suggesting a rushed publication. The table “Evolution of the Java Language” omits both versions, the Java 10
@summary comment tag and the very important Java 11 Oracle license change are not mentioned, and Java 11’s removal of the Lucida fonts is ignored. Unrelated but annoying, the section on Java Mail – long since in an external Java EE repository – still directs users to an obsolete Oracle URL.
Regardless, Core Java remains the best comprehensive printed resource for Java programmers, with a wide-ranging yet detailed coverage of subjects relevant to practical development. As usual all material has been revised as needed, with tips for Java 9–11 sprinkled throughout. Horstmann’s writing is ever concise and pleasant, abounding with practical examples and helpful advice. A mandatory investment.
(See Developer Books for my complete review archive.)