The future steps of Scala – What to expect from upcoming releases
Following the introduction of functional programming to the Java-spere with lambdas in the big 8 drop, it seemed like pressure was mounting on Scala to provide functions that Java can't. But no matter how much Java 8 wants to “kill Scala”, it’s not going to do it with a few simple lambdas.
Just in case Java 8’s lambdas ever catch up with their (far more advanced) counterparts in Scala (which they probably won’t), the wizards behind the JVM language are already working on an array of useful new features for future Scala releases.
The folks at scala-lang.org claim their goal is to make Scala and its libraries “simpler to understand, more robust and better performing”. Sounds great – how’s their mission going?
Cleaning up Scala
Scala plans to purge its collection library to improve usability. As well as reducing the reliance on inheritance, all default collections will become immutable, meaning scala.Seq will be an alias of scala.immutable.Seq.
Scala will also be cleaning up its syntax in a later version, with the goal of having less orthogonally composable features (for example, = instead of procedure syntax; XML string interpolation instead of XML literals). Future versions will also strive to iron out any weird behaviour or “puzzlers” in Scala that can deliver unpredictable results.
As well as making code faster and improving the compiler performance, the Scala overlords are aiming to introduce some new modules from the collections library.
Lazy collections through improved views, including Java 8 streams interop.
Parallel collections with performance improvements obtained from operation fusion and more efficient parallel scheduling.
An integrated abstraction to handle validation.
Goodbye Java sixes and sevens
Scala let support of Java 6 run into version 2.11, and will begin cutting its life support for both Java 6 and 7, starting in Scala 2.12. Allowing the compatibility of two different Java versions in future releases would mean more nasty “artfactId name mangling”, say the Scala masters.
Scala’s 2.11.x series, which first launched this spring, has been brought up to 2.11.2 bugfix. With initial versions appearing early next year, the first stable release of 2.12.0 is scheduled to ready by January 2016.
Once Scala has successfully phased out Java 6 and 7, warders Typesafe will get to work on a series of further Java 8 features in 2015, including gems like letting Java 8 call higher-order Scala methods without a wrapper. Scala also aims to introduce support for Java 8’s lambdas and streams.
All that ought to be enough to maintain Scala's reputation as an satisfying alternative to Java 8.