Although the release late last month of Java SE 7 did not come off without a hitch -- serious bugs turned up in the release candidate and had to be fixed in the Update 1 release -- the platform nonetheless offers developers a variety of enticing capabilities that range from programming improvements to boosts for sound applications and multicore systems.
Officially known as Java Platform Standard Edition 7, Java SE 7 is the first big release of Java in more than five years and the first under Oracle's stewardship. It offers improvements for running dynamic languages, programming, and file systems.
[ Discover the top five scripting languages for the JVM. | Get the latest developer news and insights with InfoWorld's Developer World newsletter and hands-on Java advice from the JavaWorld newsletter. ]
Java community politics delayed many new features
Java founder James Gosling, who left Oracle in 2010 and had limited involvement in developing Java SE 7, views the upgrade as critical simply because Oracle finally got it done: "Java SE 7 is important not for any particular feature but for the fact that Oracle was able to bust the political logjam in the JCP [Java Community Process] that had delayed it for so very long." Al Hilwa, an IDC analyst, agrees: "The main thing about Java SE is that it shipped. The inertia of five years without a release had to be overcome."
Despite the five years of effort, Java SE 7 is not what had been originally planned. Many features in the original JDK 7 plan have been pushed to JDK 8, which is due in 2012. Java SE 7 is thus in some ways the first of a two-part release. That's not necessarily a bad thing, says Rob Ratcliff, founder of the Austin Java Users Group and a Java developer. "It was good for Oracle to release Java 7 and move onto [Java] 8 later." He prefers the evolutionary approach to Java's development.
Among the delayed capabilities are adding Lambda expressions, or "closures," to Java for multicore programming, language and VM support for modular programming, and a module system for the JDK.
Still, Java SE 7 does offer useful new capabilities today.
Key new capability: Support for dynamic languages
A key feature of Java SE 7 is its accommodations for dynamic languages, which are becoming prominent on the JVM lately, thanks to the emergence of languages such as JRuby and Groovy. For example, the new
InvokeDynamic capability supports implementation of dynamically typed, object-oriented languages.
InvokeDynamic bytecode supports "efficient and flexible execution of method invocations in the absence of static type information," says the Java Specification Request 292, the standards document detailing the capability. Hilwa says dynamic language support is the most important feature in the Java SE 7 release because it will help expand the Java ecosystem.