Functional programming is a deep and potentially mind-bending discipline. Fortunately, Java developers don't have to master every aspect of FP to get a big boost in the performance, readability, and maintainability of their applications. By learning a few core FP principles, they can write code that's less prone to side effects and unwanted dependencies and which is much better suited to the parallel processing required by modern multi-core and distributed systems. Also, because units of functional code are designed to be modular and independent, FP reduces or eliminates many of the bugs development teams routinely face when managing a large codebase. Functional Programming in Java teaches Java developers how to incorporate the most powerful benefits of functional programming into new and existing Java code. Written to meet the needs of professional Java developers who want to introduce functional programming principles into new and legacy projects, this book uses examples, exercises, and illustrations to teach core FP principles such as referential transparency, immutability, persistence, and laziness. They'll discover which of the new functionally-inspired features of Java 8 will help in applying FP principles to code-as well as which to avoid. In the end, they'll be able to think functionally about coding tasks in Java and use FP to make their applications easier to understand, optimize, maintain, and scale. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.