This May, Oracle released the tentative schedule for Java 9, with the final release date set for September 22nd 2016 – just in time for Java 2016. As of today though, Oracle may have to adjust their planned keynote, with Chief Architect Mark Reinhold issuing a proposal to delay the next big release for an additional six months.
In a message to the OpenJDK mail list sent this evening, Reinhold suggests shifting the originally mooted Feature Complete (FC) milestone from December 10th 2015 to 25th May 2016, and moving the General Availability (GA) milestone to 23 March 2017. All other interim milestones will also be adjusted accordingly.
The key reason for this adjustment is Project Jigsaw – the big headline making modular feature of Java 9, which has also accrued its fair share of critique as the deadline for Feature Complete has approached. Whilst Reinhold writes that there’s been good progress on Jigsaw over the past eighteen months, including the re-organisation of Java source code into modules as part of JEP 201, the restructuring of run-time images to support modules last December, and the release of Early Access Builds for the community to start testing, there’s still a good deal of work to be done.
Considering that Java 9 is going to be a potential source of breaking changes for the platform, there have been extensive efforts to get developers testing early and widely, with Oracle staff taking to the stage to speak about these issues at JavaOne 2015 and Devoxx last month.
According to Reinhold, the sheer volume of interest and the high quality of the feedback received from the community in response to this evangelism has led the team to suspect that there will be considerably more to chew over as time goes on. There’s also the maintainers of essential Java build tools and IDEs to consider, who will need plenty of time to negotiate the challenges a modular Java will bring.
Finally, there’s also the fact that, as of yet, the Expert Group for JSR 376 (which defines an “approachable yet scalable modular system for the Java Platform”) has yet to publish an Early Draft Specification. For all these reasons, Team Java are pushing for a pragmatic delay in the final launch of the big update.
Whilst there will no doubt be some disappointment, overall, it’s far better for the community to have a fully baked release over a rushed job which isn’t fit for universal production. Reinhold is also keen to emphasize that this extra time will not be used as an excuse to shoehorn in a load of bonus features – it’s all about perfecting and damage proofing the work that’s been done to date.
This isn’t the first time that Jigsaw has put a spanner in planned release schedules. The feature was originally slated to appear in Java 7, and then 8, but was subsequently moved to Java 9 in order for 8 to ship in good time. Ultimately, the technical challenges inherent in modularising Java and delivering developers from JAR hell have proved a tough nut to crack, especially when you’re working on a platform which is famously conservative in its evolution.
Assuming Oracle’s Java team receive no major objections to the proposed update by 6pm UTC on Tuesday 8th December, edit that ‘save the date’ to spring 2017.