What is the Java 7 plan?
People have been asking me about the plan for Java 7 with relative frequency lately so I thought I would try to summarize what we know and what we don’t. [I maintain a somewhat out of date Java 7 page and a blog of incoming Java 7 links].
Terms
Before I go any further, I should point out that I will very intentionally and non-interchangeably using the terms “Java 7″ and “JDK 7″ in this blog post. By “Java 7″ I mean the official specification as defined by the JCP. The JCP creates specifications by creating a JSR that can be approved by the appropriate Executive Committee. Each specification includes the spec, a reference implementation, and a test compatibility kit that verifies the RI implements the spec. To have a Java 7 specification, there must be an umbrella JSR for it (like for Java 5 and Java 6).
By the informal term “JDK 7″, I really mean the current work being done (primarily by Oracle/Sun) in the OpenJDK JDK 7 project. The OpenJDK (and before it the Sun JDK) has historically been the official Reference Implementation for the specification as defined by the JCP. As such, JDK 7 is simply “an” implementation, not “the” implementation. IBM will have their own implementation (presumably) as will Apache Harmony, Apple (largely a licensed version of the Sun impl), etc.
Messy stuff
The current situation is a bit weird, and made weirder by the Oracle acquisition of Sun. There has been a long-standing dispute between Sun and Apache over the “field of use” terms in licensing the JDK Specification TCK. This has been reported with great clarity by Stephen Colebourne using publicly available documents. [The rumored reason behind all this maneuvering is said to be a reluctance to give Apache Harmony a level playing field because this would hurt Sun's Java ME licensing revenue (also note Google using Dalvik for Android rather than JavaME). But that's all rumor and speculation afaik.]
Anyhow, due to this dispute and undoubtedly other factors, a Java 7 JSR has never been submitted by Sun or Oracle to the JCP. The engineers at Sun weren’t going to sit around doing nothing so started working ahead on planned features of Java 7 in the OpenJDK JDK 7 project. In the meantime we had the acquisition and all sorts of technical project management decisions (closures out, closures in, etc etc). We now find things at a point where the implementation is significantly far along (much of it happening under feature-level specs like JSR 203, 308, etc) but there is no official proposed definition of the specification.
Schedule
The currently published calendar for JDK 7 states that JDK 7 will be feature complete on June 3, 2010 (hey that’s 2 days from now!) and the last dev milestone is targeted at Sept 9, 2010 (conveniently located right before the first Oracle-led JavaOne) with a period following for stabilization and testing. If we believe this schedule, then JDK 7 should be finished by somewhere at the end of the year.
But that’s JDK 7. It’s hard to see how you can “release” a JDK 7 without somehow resolving the issue of the Java 7 specification. Otherwise there is no “standard Java”, no “write once, run anywhere”, no defined set of features that other JDK/JVM implementors must implement. I can’t possibly imagine that as being a useful outcome for Oracle, given their dependence on enterprise Java middleware.
Next steps
We’ve been in a bit of a drought for official Java news, with not much coming out from the traditional luminaries like Danny Coward, Mark Reinhold, or Alex Buckley. We are seeing continuing work with interesting specs from Brian Goetz on virtual extension methods and lambda translations, lambda/closure work from Mark, various Project Coin feature implementations from Joe Darcy and others, etc.
I’m hoping that there will be some forthcoming news soon about where Oracle plans to take the JCP (since it controls the executive committees) and the Java 7 specification.

Hi! My name is Alex Miller and I live in St. Louis. I write code for a living and currently work for
It turns out that Neal Gafter was correct regarding the situation JDK 1.7 will be in. He was even correct about the release time/quarter two years ago. Awesome. But, still the initial work done for our favorite feature(closures) doesn’t even qualify for true closures (effectively-final constraint). Let’s see what happens till JavaOne this year.
The plan certainly seems to be “F**king ship JDK first, then see the process”. I suppose that Oracle is internally digesting issues like the TCK licensing, OpenJDK governance, the JCP’s JSPA… hopefully in a concerted, coherent plan. They will probably use JavaOne to make announcements about all this stuff in a single shot. The downside is that the umbrella JDK JSR will only have enough time for rubber stamping, but even this is not that bad considering that almost all pieces were produced by other JSRs or discussed/developed openly (well, with partial exception of the big mess of the lambdas discussion).
Considering all the debate and energy that went into the whole closure thing since 2005, it’s hard not to be just a little bit underwhelmed. Respectfully, this does not fit most people’s definition of a closure or lambda, but looks more like method handles or delegates in other languages. What do we get that we didn’t have before apart from less verbosity and more syntax?
How is JWebPane coming?
http://weblogs.java.net/blog/alex2d/archive/JWebPaneJ1.pdf
JCP is dead. A spec doesn’t mesh with a community project under the GPL… Excluding of course all the essential proprietary client stuff for Windows such as Java Web Start/Plugin and FX.
Oracle have higher priorities than appeasing the competition such and IBM and Harmony. Deciding how to merge Hotspot and JRockit and what to do with JDev/Netbeans and Glassfish etc…
Meanwhile, JDK 6 will be entrenched for several more years… Progress? Hardly…
As for Closures, convincing the average programmer they’re little more than syntactic sugar over anonymous inner classes will be a task for corporate devs who only use a portion of the ‘new’ Java 5 features.