Pure Danger Tech


Java 7 Predictions

22 Jan 2008

So, we’re a few weeks into the new year and it’s time for my predictions about what will make it into Java 7. My best guess is that a Java 7 SE JSR will be created in the next couple months to have it ready before JavaOne.

The list you’ll find below summarizes the majority of Java 7 features that have been talked about at one point or another and gives my own personal best guess as to the likelihood of inclusion. Note that a) these are my own personal guesses and do not reflect the actual activity of anyone involved in the JCP and b) these don’t necessary reflect my own personal desires, just what I think is most likely.

Feature Chance Comment
JSR 294 Superpackages Yes – 90% OSGi controvery aside, I think 294 and 277 will exist in some form
JSR 277 Java Modules Yes – 90% ditto above
JSR 203 NIO 2 Yes – 95% Work is mostly done, adds many important improvements
JSR 275 Units and Quantities Yes – 70% Progress is far along but there have been some questions on whether this should be in the JDK
JSR 310 Date and Time Yes – 90% There’s a strong desire for this and progress has been excellent
JSR 107 Cache API No – 5% Despite occasional blips on the radar, I don’t see 107 making a comeback in time for Java 7
JSR 166 Concurrency Utils Yes – 95% Mostly some evolutionary additions plus the new fork/join library
JSR 225 XQuery API for Java Yes – 90% Pretty far advanced
JSR 284 Resource Consumption Management Maybe – 60% Hard to judge this one – there is a proposed final spec and seemingly interested support from major players, but not too much info out there.
JSR 296 Swing App Framework Yes – 95% Seems far along and well-liked
JSR 295 Beans Binding Yes – 90% Lots of progress
JSR 303 Beans Validation Yes – 70% I get the impression this is a key piece with the other Swing items, but there is far less info out there. I’m assuming it will solidify.
Java Media Components Yes – 80% Seems like Sun is strongly interested in filling this gap to compete against Flash, Silverlight
JSR 255 JMX 2.0 Yes – 95% Far along, many useful improvements
JSR 262 Web Services Connector for JMX Yes – 95% Available now
JSR 260 Javadoc Update No – 10% This has been strung along for several releases now – I see no hope or interest that anyone will pick it up for Java 7
Reified Generics No – 20% Seems like a long shot to me. Could be an upset for me, but my gut says no.
Type Literals Maybe – 60% I think some useful class or reflective helper will be added as a small stopgap to no reified generics.
JSR 308 Type Annotations Yes – 80% Prototype available now
Type Inference Yes – 80% I think some type inference additions will be added, particularly those that allow the generic types on LHS to be inferred.
Closures Yes – 70% I think there is enough interest in this that something will be added. I don’t think it will be BGGA as it currently stands, but rather something that evolves from that as a starting point. Syntax is likely to change. I’d say the control abstraction aspects are less likely to be included.
ARM Blocks No – 20% Generally, I’d say no, unless they end up getting included instead of closure control abstraction.
XML Support No – 0% Not a chance
Property support Maybe – 40% I’d say this isn’t dead but that there is indifference from a large segment of the user base and splintered support from the rest. I don’t see the big players pushing any particular solution to this. I’ve said Maybe but only as a long shot.
BigDecimal operator support Yes – 90% Seems like a duh to me
Strings in switch Yes – 90% Easy and useful
Comparisons for Enum Yes – 80% Bit more of a stretch but still really useful
Chained invocations Maybe – 50% Too early to say on this one.
Extension methods Maybe – 50% Also too early to say – I think this one depends a lot on where closures goes and how badly this is needed to retrofit collections with wherever we end with for closures.
Improved catch Yes – 80% Seems to have a lot of support
JSR 292 invokedynamic Yes – 90% I think JSR 292 will produce some JVM changes in Java 7, probably most likely an invokedynamic. But John Rose has taken JSR 292 to a broader place and is really using it as an umbrella for many potential dynamic language optimizations like tail call optimization, tuple support, and more in the JVM. Unlikely that any of this will leak out to Java 7 the language though.
Tiered compilation Yes – 70% Work on this seems active enough that there will be some updates in this area, although it’s difficult to tell exactly what that will mean.

So there you go – those are my predictions. We’ll see how I do in the coming year. If you’re interested in watching the Java 7 space, check out my Java 7 link blog (RSS).