Java seems to be going through its mid-life crisis. A year or two ago, there was a massive push to get closures into Java. No doubt this was inspired by the upsurge in interest in functional programming languages and abetted by the rising use of languages like Python and Ruby which show us daily how convenient blocks are. C# keeps marching forward also. C# 3.0 is substantially heavier on syntax than C# 1.0, and much of it has to do with this functional push. There have even been motions to add closures to C++.
So, this is all good, right? People find better ways of developing software, and they extend languages to take advantage of them. It seems like it makes sense. But, have you see the OO extensions to Fortran, Cobol, and Ada? In the best cases, OO looks grafted on. In the worst cases, the extensions are too conservative. It's as if the language designers said "Look, we know that people want OO and we can do it all the way, or we can hit the 80% that people care about." It's hard to fault them for doing that, but you can't say that the result is cohesive or elegant.
The other day, I ran into a blog by Ricky Clarkson on point free style in Java 7. It's a wonderful blog, and it shows that once you have closures there a few more things that you'd like to do next. Whether Java 7 will support them is up in the air.
I have my biases. I like small minimal languages that express a few ideas and allow you to compose them to do anything you'd like to do. I don't think I'm alone in this. History shows us that when languages get too eclectic, people leap to simpler languages, or at least languages that are perceived to be simpler. Java seems to be to right on the edge now.



