Oracle has issued the first release candidate of Java Standard Edition version 7. Barring the last-minute discovery of any severe bugs, the company expects to release the final version of Java 7 on 28 July, making it the first major update of the language in five years.
"We all know for various business and political reasons that this release has taken some time," said Oracle chief Java architect Mark Rheinhold in a webcast Thursday, referring to Oracle's 2010 purchase of Sun Microsystems, which then controlled Java.
In a blog item posted Wednesday, Rheinhold announced that a pre-release build of the JDK (Java Development Kit) 7, build 147, is the first, and maybe the only pre-release Release Candidate for the programming language and associated runtime environment.
The new release is more evolutionary than revolutionary, Rheinhold said. "There are some significant improvements though nothing really earth-shattering," he said.
One feature that Rheinhold extolled is an improved I/O interface for working with file systems. The JSR-203 file API (application programming interface) specification supplants the java.io.file package.
The API can read a wider array of file attributes and can offer more information when errors occur, said Staffan Friberg, a principal product manager in the Oracle Java Platform group, in a later session. It can detect when the contents of a file have been changed. It also can work with symbolic links, for those operating systems that use symbolic links.
The API also speeds file system operations, thanks to the fact that the new API makes fewer calls to the operating system, Friberg said.
"Finally we get a comprehensive file system interface," Friberg said.
Another area of improvement is the way Java can be used by multicore processors, thanks to the inclusion of the Fork/Join framework, JSR 166. "Fork/Join is one of many ways to deal with expressing parallel computations that will scale well to arbitrary numbers of processor cores," Rheinhold said.
Java 7 also formally introduces support for dynamic languages. Over the past five years, more than 200 non-Java languages such as Scala, JRuby, Jython and Groovy have been developed to run on the (JVM) Java Virtual Machine, noted Oracle engineer John Rose.
"Dynamic languages weren't very important a decade ago, but they have grown in importance," Rose said. Dynamic languages can be used to develop programs quickly, because they don't have the rigid syntax requirements of statically typed languages such as Java.
Java 7 radically expands the amount of functionality it offers for non-Java languages, which should improve performance for programs written in these languages, Rose explained. Non-Java languages can now make method calls with the JVM. A new instruction, called invokedynamic, allows programmers to import the logic of their non-Java compilers.
"Instead of worrying about optimization techniques, [the programmer] can put it off to the JVM," Rose said.
The final release must be approved by the Java Community Process, the governing body overseeing Java.