Tuesday, October 12, 2010

Java SE 7 - new features in detail


A lot has been talked about the planned roadmap. And up to now it seems as if it is still not sure, that we will have a new Java SE 7 as planned (Mid 2011), but I thought it may be time to take a deeper look at what's in it and give you a collection of further readings on the separate topics. Following the post by Mark Reinhold from yesterday, where he states details about plan-b this is a more detailled collection with aggregated links and further readings.
The umbrella JSR for Java SE 7 should be submittet during the next weeks. Mark points out, that there might be changes to the list:
These lists should be considered neither exhaustive nor final—they are merely the starting points at which the Expert Groups for the Umbrella JSRs will begin their deliberations.
(M. Reinhold)


InvokeDynamic byte code + supporting features
VM and language extensions to support the implementation of dynamically-typed languages at performance levels near to that of the Java language itself. This feature, which implements JSR 292: Supporting Dynamically Typed Languages on the Java Platform, is the logical follow-on to JSR 223: Scripting for the Java Platform. Support for JSR 223 was provided as part of Java SE 6 and implemented in JDK 6.

Lead : John Rose
JSR : 292
Project : mlvm
OpenJDK : f353

Articles:
New JDK 7 Feature: Support for Dynamically Typed Languages in the Java Virtual Machine

Concurrency and Collections APIs
A lightweight fork/join framework, flexible and reusable synchronization barriers, transfer queues, a concurrent-reference HashMap, and thread-local pseudo-random number generators.

Lead : Doug Lea
JSR : 166
Project : jsr166y
OpenJDK : f515

Small Language Enhancements (Project "Coin")
A set of small language changes intended to simplify common, day-to-day programming tasks: Strings in switch statements, automatic resource management, improved type inference for generic instance creation ("diamond"), simplified varargs method invocation, better integral literals, and improved exception handling (multi-catch)

Lead : Joe Darcy
JSR : TBD
Project : coin
OpenJDK : f618

Upgrade class-loader architecture
Modifications to the ClassLoader API and implementation to avoid deadlocks in non-hierarchical class-loader topologies.

Lead : Karen Kinnear
Project: core-libs
OpenJDK : f352

Method to close a URLClassLoader
A method that frees the underlying resources, such as open files, held by a URLClassLoader.

Lead : Michael McMahon
Project : core
OpenJDK : f584

Unicode 6.0
Upgrade the supported version of Unicode to 6.0 which adds 2,088 characters,new properties and data files, corrects character properties for existing characters and provides format improvements.

Lead : Yuka Kamiya
Specification : Unicode 6.0
OpenJDK : f497

Locale enhancement
The Java Locale has fallen out of date, and needs to be enhanced to avoid loss of data. Relatively small changes to Locale can update it to modern standards, and avoid significant problems for companies using Java. The Java community should agree to extend the model in Locale to add the features of IETF BCP 47 and UTR 35 (CLDR/LDML).

Project : Locale Enhancement Project | Locale Enhancement Project Home
OpenJDK : fa535895

New I/O APIs (NIO.2)
New APIs for filesystem access, scalable asynchronous I/O operations, socket-channel binding and configuration, and multicast datagrams.

Lead : Alan Bateman
JSR : 203
Project: nio
OpenJDK : f250

Articles:
java.nio.file

Transport Layer Security (TLS) 1.2
The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. Java SE 7 will have support for TLS 1.2, which was standardized in 2008 as RFC 5246

Lead : Brad Wetmore
Specification : rfc5246
OpenJDK : fa534339

Elliptic-Curve Cryptography (ECC)
Elliptic curve cryptography (ECC) is an approach to public-key cryptography based on the algebraic structure of elliptic curves over finite fields. Java SE 7 will have a portable implementation of the standard Elliptic Curve Cryptographic (ECC) algorithms, so that all Java applications can use ECC out-of-the-box.

Lead : Vincent Ryan
OpenJDK : f73

JDBC 4.1
Upgrade to JDBC 4.1 and Rowset 1.1

Lead : Lance Andersen
JSR : 221
OpenJDK : fa539110

Create new platform APIs for 6u10 graphics features
Create new platform APIs for features originally implemented in the 6u10 release: Translucent and shaped windows, heavyweight/lightweight mixing, and the improved AWT security warning.

Lead : Anthony Petrov
OpenJDK : f650

Nimbus look-and-feel for Swing
Nimbus is the name of a look-and-feel designed by Sun for the Java Desktop System; it's implemented as a GTK theme in the latest Solaris 11 pre-release builds.

Lead : Jasper Potts
Project : mibus
OpenJDK : f244

Swing JLayer component
Add the SwingLabs JXLayer component decorator to the platform. With help of JXLayer you can easily decorate your compound components and catch all Mouse, Keyboard and FocusEvent for all its subcomponents.
JXLayer is very friendly to your applications, it uses only public Swing API and doesn't change any global settings like RepaintManager, EventQueue or frame's glassPane.

Lead : Alexander Potochkin
Project : JXLayer project
OpenJDK : f652

Updated XML Stack (JAXP, JAXB, & JAX-WS)
Upgrade the JAXP, JAXB, and JAX-WS APIs to the most recent stable versions.

Lead : Joe Wang
JAXP JSR : 206
JAXP Project : jaxp
JAXB JSR : 222
JAXB Project : jaxb
JAX-WS JSR : 224
JAX-WS Project : jax-ws
OpenJDK : f568

Some items in the OpenJDK 7 feature list are not present because they concidered as specific to the JDK rather than general Java SE Platform. There will also be some enhancements to the HotSpot JVM. As Oracle stated during JavaOne2010 there will be a converged JVM which contains the best features from both HotSpot and JRockit. There are no further details available on this up to now.
If you have links to further readings on any on the above topics, feel free to leave a comment and I will add them.