Java 8 Delayed to 2014 by Ongoing Security Woes
Mark Reinhhold, Chief Architect of the Java Platform Group at Oracle, announced in his blog that Oracle has decided to delay the release schedule of Java 8 for four to six months.
Citing Oracle's "intense effort to address" the wave of security vulnerabilities that have "lately received a lot of public attention", Reinhold says that many engineers have been inevitably taken off of Java 8 to address those issues. "Maintaining the security of the Java Platform always takes priority over developing new features, and so these efforts have inevitably taken engineers away from working on Java 8," says Reinhold. Additionally he emphasizes that Oracle has "upgraded" their development process to improve code quality and reduce vulnerabilities.
Reinhold says the most important slippage is in JSR 335, Project Lambda, which is charged with bringing closures (aka "lambda expressions") to the Java language. "If we drop Lambda then the remaining features are interesting but not, taken as a whole, very compelling. A Lambda-less release this year would hence be unlikely to gain wide adoption, so why bother?" posits Reinhold.
Faced with the choice of delay or scope reduction, Reinhold rejects a third option - "If we sacrifice quality in order to maintain the schedule then we'll almost certainly repeat the well-worn mistakes of the past, carving incomplete language changes and API designs into virtual stone where millions of developers will have to work around their flaws for years to come until those features-or the entire Platform-are replaced by something new."
It appears that the original schedule of September 2013 for General Availability has now slipped to Q1 2014. This is the second time Java 8 GA has slipped. Java 8 was originally pushed to late 2012 when the Java 7 development effort met with similar delays. It was later delayed again to September 2013 and Project Jigsaw was dropped. The current delay will ripple to JDK 9 and we now expect to see JDK 8 in Q1 2014, with JDK 9 moving from 2015 to early 2016. Reinhold rejects the possibility of resurrecting Project Jigsaw from this release, which as reported on InfoQ last July, had been dropped from Java 8.
Looking at the remaining Java 8 feature set it is clear that Java 8 is defined by Project Lambda.
Project Lambda requires a great deal of coordination among other large modules as well, especially the concurrency framework and the generics framework. This lends credence to Oracle's explanation of diverting development resources to address security concerns.
The introduction of Lambda expressions is one of the largest syntactical enhancements to the Java language since the introduction of generics to Java 5 back in 2004.
Closures form the basis of the increasingly popular "Functional Programming" paradigm. (The terms "closure" and "Lambda expression" are used interchangeably in the Java context, even though there are theoretical differences.) In order to provide the greatest value from closures, Java will introduce several changes to related libraries. Some of these include the new Stream APIs, which provide a mechanism for piping instructions that is vital for functional programming, and the Option class, which wraps a possibly null value to eliminate the need for testing for null references in some cases, simplifying development of closures.
Most of the popular JVM languages including Scala, Clojure, and Ruby, as well as popular .Net languages such as C# and F# (a popular .Net based functional language) already support closures, so many developers will consider this a welcome addition to Java.
It's a sad move