Tuesday, January 9, 2007

Proposed JDK 7 Features: Focusing on the Wrong Things?

Summary

The process of proposing and specifying new language features for Java has become open and transparent in recent years. But everyone having their favorite new features list for JDK 7 carries with it the danger that truly important requirements for Java's long-term success may be missed, according to Fabrizio Giudici's recent blog post.

Returning from the JavaPolis conference, Fabrizio Giudici notes in recent blog post, Where are we going?, that many of the discussions about JDK 7 features at the conference and on the Web focus on issues that will only marginally help most developers in their daily work:

Sometimes too much excitement in the wrong area distracts us away from the real problems... Let's put in in another way: does somebody think that having closures or the -> operator for properties or a neat integration with a scripting language will decrease significantly the rate of failed projects? Or will significantly increase the quality of our work, and the quality of services delivered to customers?

Before answering, please keep in mind that "project success" and "quality" are related..., but are not the same thing as "reducing costs" and "shortening the time-of-deliver..."

My answer is a resounding "no." Having better tools is important, but the key to success is another thing: the process.

At the core of Guidici's concern is that developers looking at features of other languages wish Java had some of those language features as well, such as closures, for instance. Because Java is now developed in an open and transparent fashion, a veritable smorgasbord of proposed language features has emerged, some with a good chance of being implemented in JDK 7. Guidici laments that:

I'm scared at the thought that we all end up in the rush-fashioned, Microsoft-style method "give the customer what he wants today—or he believes he wants—, take the money and don't think of the future." I'd be really sad if this trend will drive the Java evolution—it would be a betrayal of the initial promises.

What of the proposed JDK 7 features do you feel would make you truly more productive, and what proposed features do you think would be better left out of JDK 7?