Let's hope they do it right. Which of the various closure proposals will be used? Apparently it will be a mix of them all. Syntax-wise it resembles the simplistic FCM proposal, semantic-wise it partly uses the BGGA approach: seems like assignments to captured non-final variables could be in, but non-local transfers will be out (using break or continue within closure code will yield a compile-time error). Sadly this also strikes out BGGA's innovative control-statement-invocation syntax. Anyway, they have changed their decision once so there is still hope for more BGGA support.
Some quick links pointing to various sources of this news:
- Alex Miller's blog
- a summary of Mark's talk at devoxx
- closures mailing list at java.net
- Neal Gafter's current closures proposal 0.6a (simplified BGGA)
Catched a comment from Neal Gafter on Ted Newards blog:
I had been discussing this spec [BGGA 0.6a] with Gosling, but I have had no contact with Reinhold.And another one on Cay Horstmans blog:
the 0.6a specification is NOT BGGA, nor is it intended to document Mark Reinhold's plans for JDK7. [...] it resulted from a discussion with the other authors of the BGGA spec culminating in this document a couple of weeks ago [...] I was attending PDC09 when I read a tweet about closures and put up the link. I think the timing and similarity to Mark Reinhold's announcement are either coincidental or Gosling has passed it on to him. [...] Note that this spec allows access to non-final local variables from the enclosing scope, which rumors suggest Reinhold has ruled out.It's a shame Neal does not blog about closures himself anymore.