Addison-Wesley Professional wrote:
An Accessible Guide to the Java Language and Libraries
Modern Java introduces major enhancements that impact the core Java technologies and APIs at the heart of the Java platform. Many old Java idioms are no longer needed and new features such as modularization make you far more effective. However, navigating these changes can be challenging.
Core Java® SE 9 for the Impatient, Second Edition, is a complete yet concise guide that includes all the latest changes up to Java SE 9. Written by Cay S. Horstmann–author of the classic two-volume Core Java–this indispensable tutorial offers a faster, easier pathway for learning modern Java. Given Java SE 9’s size and the scope of its enhancements, there’s plenty to cover, but it’s presented in small chunks organized for quick access and easy understanding.
Horstmann’s practical insights and sample code help you quickly take advantage of all that’s new, from Java SE 9’s long-awaited “Project Jigsaw” module system to the improvements first introduced in Java SE 8, including lambda expressions and streams.
Use modules to simplify the development of well-performing complex systems
Migrate applications to work with the modularized Java API and third-party modules
Test code as you create it with the new JShell Read-Eval-Print Loop (REPL)
Use lambda expressions to express actions more concisely
Streamline and optimize data management with today’s Streams API
Leverage modern concurrent programming based on cooperating tasks
Take advantage of a multitude of API improvements for working with collections, input/output, regular expressions, and processes
Whether you’re just getting started with modern Java or you’re an experienced developer, this guide will help you write tomorrow’s most robust, efficient, and secure Java code.
Book Preview (when available)
From the publisher
Chapter 3: Java Interfaces and Lambda Expressions (HTML or PDF)
Core Java SE 9 for the Impatient by Cay Horstmann is a succinct yet comprehensive guide to the Java SE 9 language. Explanations are clearly laid out with unambiguous language and diagrams. While this book is presented as a Java SE 9 title, the content covers the Java language in general and for the most part does not discuss SE 9 specific features in isolation rather simply including them in the whole. This makes for a consistent delivery that focusses on making good use of the language rather than on what's new and what's not.
For readers who would not be that experienced with Java, but have some familiarity with programming, each chapter presents a thorough and easy to follow exploration of the language features, and I especially like that Cay tackles the basics of how to operate the 'java' and 'javac' commands on the command line without muddying the waters with IDE "magic". That said, there is plenty of meat here too for the seasoned developer, such as myself, and a lot can be learned from Cay's opinions alone. All the code examples used are available as a download and each chapter is concluded with a set of exercises for the reader to put the theory into practice, although it would have been nice to see solutions to those exercises.
A broad range of topics are covered throughout this book and I get the sense that they are carefully curated to cover what I would consider everything you need for solid general purpose programming. Edge case, quirky, and specialist topics are largely omitted but when mentioned, as with the Reflection library, are introduced with a note of well deserved caution. This recurring theme of Cay sharing his experience based opinion about the features and usage of the Java language is what I believe sets this title apart from other similar titles.
I give this book 10 out of 10 horseshoes.
Disclosure: I received a copy of this book from the publisher in exchange for writing this review on behalf of CodeRanch.
It is a nice book, but I wish it had more end of chapter problems of different types. Perhaps these problems could be included as a supplementary book. As an aside, it would be nice to have suggestions for some non-trivial projects also.
One major problem I faced in learning Lambdas and Streams from this book is that there were not enough exercises to make me remember the concepts. After all, the more you practice, the better and longer you remember. I was forced to find questions in stack overflow and solve them. I lost a lot of time in filtering out bad or silly questions to get a little bit of practice.
Sometimes, I cannot practice streams for many days which makes me fear that I'll forget what I learned. I'd imagine that any experienced OO programmer who is learning Java from this book could benefit from extra exercises.
Please consider making a supplement with extra problems, and hints or solutions.