Asynchronicity: Using functional programming—functions together with immutable state—makes asynchronous event-driven programming so much easier. Async programming means non-blocking and process isolation, and it forms the basis for the nice properties defined in the Reactive Manifesto. It encourages reactive programming, and it makes it less verbose and clumsy to do so. My company recently ran a survey of more than 2,800 Java developers that surfaced their attitudes and intentions around Java 8. That 83% viewed support of lambda expressions and virtual extension methods as the most interesting feature area in Java 8 is telling that Java developers have been wrestling with thorny areas like state and failure management, and have a strong appetite for new approaches that will make their lives easier.
Functional programming has a lot of really nice properties if it’s done the right way. It gives you code that you can trust, code that doesn’t lie, since it relies on stable values. It’s code that discourages side effects and where side effects are decoupled from state changes. The functional programming directions that Java 8 is introducing to the Java masses are very exciting, and we believe that a certain percentage of that market isn’t going to stop there. It’s going to open their eyes to some of the innovations in Scala, Erlang, Haskell, and libraries like Google Guava.
Jonas Bonér is a cofounder of Typesafe and creator of the Akka event-driven middleware project. Previously he was a core technical contributor at Terracotta, working on core JVM-level clustering technology, and at BEA, as part of the JRockit JVM team. Jonas has also been an active contributor to open-source projects, including the AspectWerkz AOP framework and the Eclipse AspectJ project.