Since this Jolt-award winning classic was last updated in 2008 (shortly after Java 6 was
released) Java has changed dramatically. The principal enhancement in Java 8 was the addition
of functional programming constructs to Java's object-oriented roots. Java 7 8 and 9 also
introduced language features such as the try-with-resources statement the diamond operator
for generic types default and static methods in interfaces the @SafeVarargs annotation and
modules. New library features include pervasive use of functional interfaces and streams the
java.time package for manipulating dates and times and numerous minor enhancements such as
convenience factory methods for collections. In this new edition of Effective Java Bloch
updates the work to take advantage of these new language and library features and provides
specific best practices for their use. Java's increased support for multiple paradigms
increases the need for best-practices advice and this book delivers.