“Functional Programming for Java Developers” provides an introduction to Functional Programming to Java developers that have been using Object Oriented development. The focus of this book is to provided some great examples of how to use Functional Programming and to get you excited about expanding your knowledge by looking into many of the references that are included at the end of the book. Dean did a great job providing examples throughout the book related to the topic of each chapter. In addition, he provides concise coverage of the topics and exercises at the end of each chapter to help enforce the topics that were just covered.
I would recommend this book to anyone that wanted to get an understanding of what Functional Programming is all about and the benefits that it brings to the table. Reading through this book opened up my eyes to how to improve on coding and designs that I have implemented over the years. For example, dealing with mutable objects and the issues that it cause with concurrency and/or other classes modifying them outside of the class that owns that data. I really enjoyed the sections on Persistent Data Structures and Software Transactional Memory in the way that trees are used to deal with changes throughout time. How you could use this to help present the pedigree of changes made by users of your system. Or you could even use this type of technique to roll back data to a specific state similar to version control systems (SVN, CVS, GIT, etc).
On the other hand, if you already have the basic understanding and see the benefits of functional programming, I would not recommend this book and would suggest getting his book on Scala or another book for intermediate to advanced on Functional Programming.
If you are new to the topic you can find his book at O’Reilly.