After two days of QCon you get the feeling that no one is talking about Java anymore. C#, Erlang, F#, Groovy, Ruby, and Scala seem to have taken over. The only new Java stuff being talked about are libraries, application servers, or just IDE improvements. No one is talking about the Java language.

Looking back, the last major change of Java language was with the release of Java 5 in 2004. Java 7 will bring changes, but is late. The advantage is stability, but the price to pay is that the brightest minds in the industry start to leave Java behind.

A prime example is closures. A lot of Java code is simple boilerplate code, like managing your JDBC resources just to execute a simple query, iterating over a collections just for some transformation or filtering, implementing builders to ensure complicated classes are initialized correctly, implementing GUI event handlers, operations inside parallel processing frameworks, etc. Closures allow you to easily reuse control flow patterns, reducing or eliminating this kind of error prone code.

A language cannot remain static and still have a thriving community. The effects can already be seen on a conference like QCon, where Java has been left behind for greener pastures by many speakers and attendants.