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).