I am starting to go through “Functional Programming in Java” by Venkat Subramaniam. I need to learn more about the stuff that is in JDK 8. We are still on JDK 6 where I work, but I think we will go to JDK 7 soon.
I think a lot of the new features in JDK 8 are similar to stuff that has been in Groovy for a long time.
There is an interesting paragraph in the Foreword by Brian Goetz:
The Java 8 design was heavily influenced by the core principles of functional programming: functions as values, immutability, and statelessness. We didn’t do this because functional programming is trendy or cool; we did this because programs that are expressed as stateless transformations on immutable data, rather than as modification of mutable data structures, tend to be easier to read and maintain and less error-prone, and to parallelize more gracefully.
Image from an 11th century Gospel manuscript made in Lorsch housed at the Bibliothèque Sainte-Geneviève; image from the Virtual Monastic Library of Lorsch, allowed under Fair Use.