Mark Reinhold, Oracle's chief Java engineer, has announced that four Java Specification Requests (JSRs) crucial to the next two versions of Java have now been submitted to the Java Community Process (JCP). They specify the Java technologies detailed in the recently announced Plan B, under which JDK 7 will be released in mid 2011 without – lambda functions, Project Jigsaw (which concerns modularisation) and parts of Project Coin. This will be followed in late 2012 by JDK 8, which will include those omitted components from Java 7 and others. Plan A would have involved a Java 7 containing all of the features described above, but it would not have been ready to ship until mid 2012.

The draft specifications now released are JSRs 334 to 337.

JSR 334 – Small Enhancements for the Java Programming Language – defines a number of technologies developed as part of Project Coin. This collection of small language functions includes the addition of string cases to switch statements, better type inference using the Diamond operator to avoid tedious repetition of generic type parameters and a special try block, which takes care of correct resource allocation.

JSR 335 – Lambda Expressions for the Java Programming Language – concerns the introduction of closures. The concept is derived from functional programming, but has also now been introduced into non-functional languages such as C#, JavaScript, Perl, PHP, Python, Ruby and Smalltalk. When called, closures reproduce their definition context, even where that context no longer exists outside of the function. The specification is being implemented as part of OpenJDK via Project Lambda.

JSR 336 – Java SE 7 Release Contents – is an umbrella specification containing additional JSRs and Java technologies. These include a new Concurrency API including a fork / join framework, improved performance when working with dynamically typed languages (JSR 292), a new File System API (JSR 203), support for Unicode 6.0 and JDBC 4.1 and the addition of Nimbus look and feel and JLayer components to the Swing GUI toolkit.

JSR 337 – Java SE 8 Release Contents – includes a module system aimed at liberating Java developers from "classpath hell" and an extended Collections Framework to allow collections to run more efficiently and in parallel.

Now that the JSRs have been submitted to the JCP, it is down to the Executive Committee to approve or reject them. The Apache Software Foundation has already announced that, unless Oracle changes its licensing strategy for the test compatibility kits (TCKs) required for Java certification, it will vote against Oracle's proposal.

(crve)