Functional Programming is nothing new to JVM. But with Java 8 it was the big change in paradigm for Java developers. Switching from imperative to functional opens new ways in writing more maintainable code.
Recently, after upgrading my J2EE project I had to spend some time on two unexpected (right! "nobody expects unexpected exceptions") issues that stopped the development for a while. The first one occurred while JBoss launch - server log errored me about a wrong EAR structure. After I had sorted this issue out (that occurs the Maven fault), log shouted, at run time, about HeuristicMixedException. It sounded like that was a judgement day.