This is a weekly update on new Java 7 information. All current and previous information is maintained on my Java 7 page.
As expected, there was a bevy of output from JavaPolis last week, which by all accounts was a fantastic conference. Maybe I can make it next year…would love to go. Stephen Colebourne tended the JavaPolis whiteboards this year and collected some fascinating stuff, of which I found the Java 7 stuff most interesting. You can see the written up results about language changes and closures, although I’d recommend taking a look at all of the original boards.
InfoQ also did a summary of the various threads on the JCP and the future of Java. I always wonder whether to link these InfoQ summaries as they don’t really add anything new, but they do a nice job summarizing the discussion across the web.
One quick note is that there is now a proposed final draft available for JSR 225 XQJ, Xquery for Java.
More info: JSR 225
There was a blog by Angry Mongoose (presumably not his real name) on difficulties with JSR 296
More info: JSR 296
Coming back to JavaPolis, the closure debate seems to have broken wide open with presentations by both Neal Gafter (obviously a proponent of the BGGA closures proposal) and Josh Bloch (author of the far more modest CICE proposal). This is, of course, fascinating on a couple levels. These guys are both undeniably super smart icons in the Java world and deep-thinkers. They clearly come down on different sides of the closures coin as it were. The fact that they are both at Google and perhaps the two Googlers closest to the Java standards process, makes it all the more interesting. It’s hard not to see closures as an inflection point in the future of Java.
Anyhow, at JavaPolis Neal gave a presentation about closures and Josh also gave what seems to have been a list minute talk on his own viewpoint. Josh has been advocating the far simpler CICE and ARM proposals. CICE addresses the usability of anonymous inner classes, particularly single-method ones. ARM addresses the closing of one or more resources (locks, streams, JDBC connections, etc), which is a key use case that needs some attention. Neal himself responded to Josh’s talk.
Anyhow, seems like while Neal’s work on the prototype and tenacious pursuit of closures has created some momentum, Josh’s well-reasoned counter-arguments won over a lot of supporters at JavaPolis.
You can see some feedback from others on the web:
In other language news, Howard Lovatt wrote a proposal for extension methods and chained invocations. I’d say I’m not a fan of extension methods and still on the fence about chained invocations. Can’t say I like this new proposal much more than any of the others I’ve seen. I just don’t see where it solves any real problem I’ve ever seen. To me, it seems like the real motivating force behind it is the need to retrofit the existing Java collections library with closures, but maybe I’m reading those tea leaves wrong.
Howard also wrote a nice proposal for traits, which I like a lot more than extension methods and actually could have been useful for real things I’ve seen.
John Rose wrote a lengthy post on an architecture for dynamic invocation. This is a prequel and justification of sorts for an upcoming Early Draft of JSR 292. So, if you’re interested in dynamic invocation and how that would expand support for functional and dynamic languages, take a look and provide some feedback. As always, the jvm-languages Google group is a great place for discussion.
More info: invokedynamic