Summary
Danny Coward, Sun's Java SE platform lead, in a recent Sun Developer Network article highlights some of the key proposals to add new features to Java, and discusses the design principles that guide the language's long-term evolution.
Advertisement
Danny Coward is Sun's platform lead for Java SE, and represents Sun on the JCP Executive Committee. He led several JCP specifications, including JSR 223, Scripting for the Java Platform. (See Artima's interview with Danny Coward on Dynamic Language Support on the JVM.)
In a recently published article on Sun Developer Network, Java Programming Language: Design Principles and Proposals, Coward summarizes the main current proposals to add new features to the Java language, and discusses some of the design principles Sun follows in evaluating those proposals.
Coward points out that such principles will likely determine Java's long-term future, and that innovations must consider Java's huge user-base:
A factor in the Java language's longevity will be the relevance of the design principles we use to evolve it. If we choose wisely, these will keep us classic and yet hip for a long time to come...
We need to scan the horizon for ... non-disruptive innovations that have widespread useful consequences. Given that many Java developers are Java Platform, Enterprise Edition (Java EE) developers, for example, it is no wonder that the use of annotations has been such a big hit...
One of the principal tenets is that it should do what you would expect it to do... code is something living that we (or someone else) will need to revisit many times in what we hope to be a long and productive life...
No flavors, dialects, slangs, pidgins, or creoles allowed! One of the chief advantages of the Java language is that whether it be written as part of an applet or a desktop application, or to run an algorithm on the world's largest search engine, it still means the same thing...
If the semantic model of a language is clear-if its rules are simple and precise-the language will be more productive to use. Less is more. Naturally, this creates an instant tension when considering a new language feature...
Coward also mentions Java's changing demographics as a factor to consider in language evolution:
In 1995, the predominant language that developers learned was C... A new generation of developers has started with Java, rather than ending up there. One of the many interesting challenges for the Java language is how much to appeal to developers who additionally experiment with new dynamic languages...
Among the proposals he discusses are those for providing property support, closures, block constructs, method references, operator overloading-related proposals, and a grab-bag of others.
What do you consider to be the most important principle to follow to ensure Java's continued success?
I hope that IBM will say "NO" to the Java 7 JSR. Please do it, IBM! Save us from Sun's totalitarist dictatorship and create a new democratic community process and a new technology that succeeds and replaces SUNW Java (TM). You did it with Eclipse and you will hopefully do this favour to the rest of the Java-community.
Sun tries to kill Apache Harmony which is a project developped by IBM and Intel. There is no need to continue the JCP with SUNW behaving like Microsoft used to do.
I'd also suggest that the successful development and adoption of new languages on the JVM is the best way to protect the longevity of Java itself.
To this end, I think Sun should put JRuby and Scala center stage, and devote its energies to working closely with the Scala and JRuby teams to develop the JVM to enable these languages to reach their full potential.
> I'd also suggest that the successful development and > adoption of new languages on the JVM is the best way to > protect the longevity of Java itself. > > To this end, I think Sun should put JRuby and Scala center > stage, and devote its energies to working closely with the > Scala and JRuby teams to develop the JVM to enable these > languages to reach their full potential.
...and devote all further effort in Java to fixing issues with the JDK and language (if possible).