At the time Visual Studio 2008 was a pending release so most of the people were not yet familiar with the language changes in C#.
Juval took a little time to demonstrate the closures in C# to an impressed bunch of hardcore .Net programmers.
At the time I had been regularly writing ruby scripts and all I could think of when I saw the C# closures syntax is: "Man that looks terrible".
Ever since then, I can't help but get the feeling that if MS keeps chucking new features into C# it's not going to look pretty in a few releases.
But regardless of the impact of those features to the core C# language. MS has managed to - with the help of frameworks to make use of the features - create a whole lot of excitement around C# and .Net.
And in the IT industry, excitement around products is important unless you want to leak market share.
It unfortunately also been a couple of years since there's been any excitement around Java.
So what is a direction-less Java developer to do?
One of the options is the Java.next option: keep the JVM but use another language to run on top of it.
This has got quite a few advantages:
But before you can do this there are some requirements for corporate IT to accept this:
Another option is the Java 7.0 option: simply add new language features to Java to at least maintain parity with other languages. And that of course comes with the risk of messing up the language. Furthermore the changes need to added within a certain time line in order to not create the perception that the language is behind the times.
And then if that fails there is always the COBOL option: leave the language be and then for us developers; when the Java well runs dry we become COBOL style system maintainers or we simply dump the platform all together and start from scratch.