Oracle is going with Plan B for JDK 7.
Thomas Kurian, executive vice president of Oracle, took the stage at Oracle OpenWorld and JavaOne on Monday night to remove the uncertainty that has surrounded the Java platform since Oracle closed its acquisition of Sun Microsystems earlier this year.
“I’ve been at JavaOne since 1997,” said Kurian, “but this year is very special for us because it is the first year that Oracle is the steward and responsible for Java. What we want to do today is to make sure every developer is crystal clear on where we see the Java platform evolving.”
Plan B calls for the elimination of projects Coin, Jigsaw and Lambda from the JDK 7 release train. This will push forward the completion date of JDK 7 to some time in 2011, and allow the Oracle team to push for JDK 8 in 2012.
Those three lost features will be pushed into JDK 8, according to Mark Reinhold, Oracle’s lead developer for JDK 7. Project Jigsaw is an effort to make Java more modular, while Project Lambda aims to bring closures to Java, and Project Coin is an effort to make small changes to Java’s behavior and syntax. All three projects are underway, but Reinhold intimated on his blog that including them in JDK 7 would push the release of that project back until 2012.
While JDK 7 is moving toward completion in the middle of next year, a JSR will be constructed alongside it and passed through the JCP at the same time. Reinhold wrote on his blog that the JCP will approve a specification for JDK 7 at the same time as the release of the final version of the platform; this is the traditional way new versions of Java have been advanced.
For the past year, the JCP has remained stagnant. Even Rod Johnson, a member of the JCP executive committee, has hinted that the body might be dying. But while Oracle has been quiet on the topic of the JCP until now, the announcement that JDK 7 would have an umbrella JSR issued and worked through the JCP indicates that Oracle intends to keep the community body alive.
Key to this client-side push in Java is the addition of a new 2D and 3D graphics engine for JDK 7. Codenamed Prism, the graphics engine will provide 3D-accelerator support within Java through DirectX and OpenGL. Additionally, the new engine will be bolstered by new AWT and Swing user-interface creation routines in JavaFX.
Finally, the entire client-side stack will be built and deployed in a standard and unified manner, all of which will take place inside of NetBeans. That IDE will see two new releases within the next year, said Kurian.
“From a programming model point of view, we’re going to give you APIs for visual design with declarative development, and a standard set of UI controls. We’ll also add support for data binding to REST or JSON and various kinds of back-end sources.”
Kurian went on to discuss the future of Java EE, but he did not describe any new features or plans for that platform. Instead, he stated that Oracle will continue to improve the interoperability, performance and modularity of Java EE. He then described the additions to the platform that have taken place this year.
Java ME is receiving, perhaps, the most drastic changes currently planned for Java. Kurian explained that Java ME will now focus on lower-end mobile devices, such as flip phones and so-called feature phones. Because these devices lack standardized Web browsers, Java ME will now contain elements of the open-source Web browser used by Apple, Google, Research In Motion and WebKit.
Using these components, said Kurian, developers will be able to distill Web experiences into order lists suitable for display on the tiny, low-resolution screens of non-smartphones. Java ME will also add a new 2D and 3D rendering engine to encourage game development on these platforms, he said.
Oracle and the OpenJDK project have laid out what is likely to be the final list of new features for what will become Java SE 7. That release will most likely arrive next summer.
Proposed JDK 7 features
• JSR 292: Support for dynamically typed languages (InvokeDynamic)
• JSR TBD: Small language enhancements (Some parts of Project Coin)
• Upgraded class-loader architecture
• Method to close a URLClassLoader
• Concurrency and collections updates
• Unicode 6.0
• Locale enhancement
• Separate user locale and user-interface locale
• JSR 203: More new I/O APIs for the Java platform (NIO.2)
• NIO.2 filesystem provider for zip/jar archives
• SCTP (Stream Control Transmission Protocol)
• SDP (Sockets Direct Protocol)
• Compatibility with the Windows Vista IPv6 stack
• TLS 1.2
• Elliptic-curve cryptography (ECC)
• JDBC 4.1
• XRender pipeline for Java 2D
• Creation of a new platform APIs for 6u10 graphics features
• Nimbus look-and-feel for Swing
• Swing JLayer component
• Update to the XML stack