The Technical General Session on Tuesday was held at the Hilton and not at the Moscone Convention Center. After traversing the awkward combination of stairs and escalators to get to the Ballroom in the Hilton I was pleased to see the hotel staff had reconfigured the room since the lunch hour from round tables to the standard endless rows of neatly lined up chairs. The session was true to Java’s heritage and once again told as a story in 3 parts – JavaSE, and JavaME. However, far and away the most interesting information came from the JavaSE portion of the presentation.

, Chief Architect at (a former employee) presented what he called The Road Ahead for JavaSE. Reinhold stated that the near future releases of JavaSE (JDK 7 and JDK 8) would focus on 6 key areas:

  • Productivity
  • Universality
  • Modularity
  • Integration
  • Serviceability

On the developer productivity front he showed 2 examples of syntax changes that will be included in JDK 7 that have come from Project Coin. Firstly he showed the ability to use a short hand empty bracket notation on the right hand side of a generic object instantiation and assignment. Something similar too

List myList = ArrayList<>();

which makes sense, since repeating the generic type binding on the right hand side is just overhead.

He also showed a code example of the try with resources construct that is intended to remove a lot of the hairy code involved with opening and closing streams reliably and the try and catch blocks associated with them.

For performance, Reinhold pointed to data that shows that processor clock speeds are starting to level out, however the number of transistors and cores per chip is now beginning to increase rapidly. So to continue to improve the performance of Java based applications, some language constructs that make it easier to write code that can be spread across multi-core processors are needed. This is where Project Lambda comes in. Also called “closures”, lambda expressions (among other things) allow the compiler to optimize algorithms more easily for mutli-core execution than traditional code constructs do.

On the topic of future features of JavaSE (beyond JDK 7 or 8), Reinhold spoke briefly about reification (which to be honest I had to get a dictionary out to find out what that word even meant, and I am still not 100% sure about his usage of it). Basically, it is the idea of having the generic type information, which is normally lost during the compilation process, persist through to the runtime environment, thus eliminating issues like type erasure and other quirks in the generics system. He also spoke about the creation of a new kind of object called a value class (think of the Value Object pattern) where the class can more easily be made immutable and its immutability be made known to optimizing compilers. And following on from the value class concept was the ability to declare class instance variables as properties and thus letting the compiler auto generate the getter and setter methods as necessary (similar to ), saving the developer the task of writing hundreds of lines of essentially boiler plate code.

The Davinci Machine Project (JSR-292) was also briefly mentioned as the initiative to add support for additional languages to run on top of the JVM.

Reinhold then switched gears from code syntax updates to JVM changes. With Oracle’s acquisition of both BEA and Sun in recent years, they had acquired a lot of overlapping technologies. In particular at the core of the Java Platform they had 2 complete JVMs, BEA’s JRockit and Sun’s HotSpot. Reinhold outlined the plan to merge the two codebases (using the HotSpot codebase as the core) and create a single JVM with the best of both worlds.

Reinhold closed with a promise to deliver a cut down feature set version of JDK 7 (most notably missing Project Jigsaw and Project Lambda) by mid 2011 and then to deliver JDK 8 with everything that was left out of 7 plus more by the end of 2012. He also committed to use the JCP process for all features being proposed for those 2 releases.

Roberto Chinnici (whose title at Oracle is somewhat vague as listed on the Oracle website – Consulting Member of Technical Staff – I am not even sure if that means he is an Oracle employee or not) next delivered a nice summary of the JavaEE 6 release, however since JavaEE 6 is roughly 10 months old now, there was very little noteworthy or new discussed. Chinnici once again emphasized the Web Profile (as did Kurian in Monday’s Keynote) as a way to simplify enterprise web develop and provisioning.

Chinnici also quickly ran through some future ideas for JavaEE starting with a focus on making JavaEE more cloud friendly, better support for HTML 5, a JSON API, a 2.0 upgrade to NIO and the Web Socket concept.

Finally the stage was handed over to Greg Bollella, Chief Architect for Embedded Java at Oracle. Unfortunately with the JavaSE portion of the presentation taking up so much time, the JavaME piece was a little rushed.

Once again Oracle’s strategy for Java on phones seems completely limited to feature phones only, like they have given up on the smart phone market entirely. Pushing innovations in the feature phone market is not going to grab anybody’s interest these days. Java on other devices like TVs, Bluray discs and even photocopiers and printers seems much more progressive and interesting in contrast. Bollella is scheduled to talk at the Thursday Keynote, which is being called the Java Frontier Keynote, which I assume is intended to be a nod to Gosling’s infamous Friday Toy Show Keynote of JavaOnes gone by. My fingers are crossed that he can show why JavaME matters elsewhere, even if it doesn’t on a phone anymore.

I believe the commitment for JDK 7 in 2011 and the feature set promised will satisfy most developers, especially those who had given up hope of JDK 7 ever seeing the light of day. The JavaEE presentation was lacking any real zing as the JavaEE 6 release has been in the wild for almost a year now, whereas it would have been a much fresher topic at a conference held in the May time frame. That being said, JavaEE 6 does appear to be a solid update to the platform. But JavaME really seems to still be the big question mark in my mind. The strategy and messaging seems muddled, seriously, is it for consumer devices or traffic lights?