Java 7 and 8 Begin to Take Shape: What's In, What's Out?
The next two major versions of Java are beginning to take shape. Oracle has submitted the release content for both Java SE 7 and 8 to the Java Community Process (JCP) for approval before the end of the month.
JSR (Java Specification Request) 336 details the components and features that will become JDK 7, while JSR 337 details JDK 8. The final Java 7 release is being targeted for mid-2011, while Java 8’s release is set for 2012.
"These JSRs have been a long time coming," Mark Reinhold, Chief Architect of the Java Platform Group at Oracle, blogged. "They're now finally on the JCP Executive Committee ballot for approval; results should be available in two weeks."
The JDK 7 and 8 JSRs represent Oracle's "Plan B" approach for separating JDK 7 into two separate releases, splitting up features that were all originally intended for the Java 7 release. This approach is intended to help expedite new Java releases.
Among the key components of the original Java 7 plan that are now set for inclusion in Java 8 are the Lambda and Jigsaw efforts. At JavaOne this year, Thomas Kurian, executive vice president, Oracle Product Development, explained that Lambda is all about bringing closures to the Java language. Kurian noted at the time that Lambda is intended to provide a more concise replacement for inner classes, as well as support automatically parallel operations on collections.
Jigsaw is all about building modularity into the Java Virtual Machine (JVM).
"The goal of this Project is to design and implement a simple, low-level module system focused narrowly upon the goal of modularizing the JDK, and to apply that system to the JDK itself," the Project Jigsaw project page states.
What JDK 7 Has in Store
JSR-336 defines a number of key areas where Java 7 will improve on previous versions of the language, including productivity and performance enhancements.
On the productivity front, a goal of Java 7 is to reduce boilerplate code while promoting best coding practices.
"These features will increase the abstraction level of most applications in a pragmatic way, with no significant impact on existing code and a minimal learning curve for all developers," JSR-336 states. "We propose to enable, among other improvements, the automatic management of I/O resources, simpler use of generics and more-concise exception handling."
In terms of performance, Java 7 is looking to expand the multi-threaded and multi-core capabilities of Java with new concurrency APIs. "These include, in particular, a Fork/Join Framework, which can adaptively scale some types of application code to the available number of processors," JSR-336 states. "Java SE 7 will further enable I/O-intensive applications by introducing a true asynchronous I/O API as part of JSR 203."
At this point, the Eclipse Foundation, Ericsson, IBM, Red Hat and SAP are already supporting JSR-336 and JSR-337 for Java 7 and 8. JCP balloting on the JSRs finishes on November 29th.