The big Java 8 features: lambdas and streams are very Scala-esque features. And on the discussion of Java syntax changes, Scala is really completely relevant. It’s a very Java-like language with many cut & dry pareto enhancements. The principal guy behind Scala used to be a JDK guy so this makes sense. That is unfair to claim comments regarding Scala as off topic.
Sure, the try-with-resources, was a mild improvement in Java 7.
Java 8 is bigger. I am maintaining a large Java 6/7 code base. There are dozens of time I see:
- Code manually converting a collection of one type to another type. Could be simplified with a “map” operation in Java 8 or even JavaScript.
- Code manually filtering a collection. Could be simplified with a “filter” operation in Java 8 or even JavaScript.
- Code manually aggregating a collection. Could be simplified with a “fold” operation in Java 8.
- Code manually dealing with null issues. Could be simplified with a decent “Optional” type as in Java 8.
Honestly, all of the above could be done in Java 6/7 with an add-on library like Functional Java, but it’s nice to have a high quality implementation in the core library. And have nice lambda syntax rather than the anonymous inner class system.