Monday, October 3, 2011

JavaOne 2011: Opening (Technical) Keynote

JavaOne 2011 appears to be very well attended. The Hilton San Francisco Ballroom A/B is standing-room only for the JavaOne 2011 Technical (Opening) Keynote and they have announced the overflow rooms as the Imperial and Yosemite conference rooms. As I type this, we are being told that there is more space devoted to JavaOne this year (as compared to last year) and that there is increased attendance at JavaOne this year (again as compared to last year).

As we waited for the keynote to begin, the main screens showed slides touting the prevalence of Java and the 2011 Duke's Choice Awards winners. It was an interesting set of slides to pass the time reading. Latin America 2011 (December 6-8) and Tokyo 2012 (April 4-6) editions of JavaOne were announced.

Doug Fisher of Intel stated that Intel started using Java the year it came out. He talked about dedicating Intel resources to optimizing the JVM on Intel architectures. He spoke of the greatly increased footprint of Java that has occurred since those days. He credited those in attendance for this increased footprint. Doug introduced Intel and Oracle folks involved with optimizing the JVM on the Intel architecture and asked them to speak. The speakers from Intel and Oracle talked about how they collaborated together ("4 years of JVM Optimization") to break speed records related to JVM performance. They credited hardware vendors for many important improvements. They talked about work on Java 7 and Java 8 JVMs for Intel architecture. All work they collaborate on "ends up in OpenJDK."

Ashok Joshi (Senior Director of Development NoSQL Database) announced the new Oracle NoSQL Database (not a big surprise). Joshi's presentation was relatively short, but I expect that Oracle OpenWorld sessions will cover this in more detail as described in Oracle docs show plans for Hadoop, NoSQL.

Mark Reinhold kicked off the Technical Keynote portion of this opening keynote with "The Java SE Platform: Rebuilding Momentum." He started by recounting the drawn-out development of Java 7 and last year's announcements. Mark then focused on Project Coin, invokedynamic, and Fork/Join.

Mark showed code samples for Java 7 Project Coin enhancements for "everyday programming tasks" such as diamond operator, switching on Strings, catching multiple exceptions, try-with-resources, precise rethrow, literal number representations, and the new standard annotation for safe variable arguments. Reinhold announced that the three major Java IDEs now all support Project Coin enhancements.

Reinhold stated that "invokedynamic is more about Java the platform than about Java the language." Reinhold introduced Charles Nutter (JRuby) to discuss invokedynamic in more detail. Nutter stated that this new feature would significantly improve JRuby performance. He said the method handling API and the ability to dynamically invoke methods are the two biggest reasons for the performance improvement. Nutter explained that invokedynamic may be the first time the JVM has been modified for something other than the Java language. Reinhold introduced Project Nashorn, which he stated has been introduced to test out invokedynamic and to provide a really good JavaScript implementation on the JVM.

Reinhold said that while Java 7 is "more evolutionary than revolutionary," Java 8 is likely to be "more revolutionary." The two main concepts of Java 8 that he discussed are adding lambda expressions to the Java language (Project Lambda) and Project Jigsaw. Reinhold stated that while part of introducing lambda expressions is to "keep up with the cool kids," a more important reason for introducing lambda expressions is dealing with multiple processors.

Reinhold talked about Project Jigsaw being intended for "programming in the large" with a module-based system. He briefly mentioned the difficulty of using the classpath as we know it today. He showed a slide that showed dependencies in a graph knowing only their own dependencies without the software itself needing to know every indirect dependency. Reinhold showed "an improvement over JAR format." He also stated they have a goal to get a "base JVM" down to a much smaller size by installing only the necessary modules for the type of application being developed. Reinhold said other goals include using Jigsaw all the way the stack into Java EE and to work well and interact properly with OSGi.

Reinhold stated that Java 8 is likely to see improvements to the Date/Time API, continued JVM convergence, and Type Annotations (JSR 308). He stated that planned timing for Java 8 will be discussed in the Strategy session. He looked forward to post Java 8 with reference to potential improvements such as self-tuning JVM, improved native integration, big data, reification, tail calls/continuations, multi-tenancy, resource management, and heterogenous computer models.

OpenJDK was highlighted in Reinhold's portion of the presentation. He showed a slide with Duke pointing to the Java developers and saying "I need you" to communicate the need for the community to provide feedback on the future of OpenJDK as Java's reference implementation.

Richard Bair (Chief Architect, Java Client Platform) followed Reinhold and focused on JavaFX. He stated that a key design objective of JavaFX is cross platform compatibility. He also said that JavaFX needs the best graphical interface building tools as Java already has "the best IDEs." Another JavaFX design objective is productivity ("Java + Tools + Docs + API Consistency"). After introducing the design objectives, Bair formally announced "JavaFX 2.0 General Availability" and the "JavaFX 2.0 Developer Preview for Mac OS X." He also announced "JavaFX Scene Builder Early Access" and "NetBeans IDE 7.1 Beta" with JavaFX 2.0 support.

Bair highlighted "key features" of JavaFX 2 such as "100% Java API," "FXML for UI markup," integrated web content (embedded web pages), Swing integration, and "rich graphics and animation." Bair moved to the demonstrations portion after his slide of "key features." Bair demonstrated downloadable samples such as Ensemble and Sales Dashboard. These demonstrations were then followed by additional JavaFX demonstrations including one that demonstrated running 60 frames per second seemingly with no troubles or hesitations. An example was shown of converting a 2D Rubix Cube into 3D space. Another example showed Duke in 3D. The demonstration of integrating the JavaFX rendering with Kinect to move Duke's arms and bodies was received with loud applause.

Linda DeMichiel talked about Java EE 7 and "moving Java EE into the cloud." She stated that Java EE 7's focus is "Platform as a Service" (PaaS), She talked about the PaaS Roadmap, including defining new platform roles, adding metadata, adding useful cloud environment APIs (JAX-RS client API, caching API, state management, JSON), and extending existing APIs to support multitenancy.

Arun Gupta talked about and demonstrated "Running a Java EE Application in the Cloud" using GlassFish, JPA, JSF (and PrimeFaces), and EJBs. His demonstration is available under "Running your Java EE Applications in a PaaS: JavaOne 2011 Java EE Technical Keynote Demo" section of the GlassFish at JavaOne 2011 page. Gupta mentioned the PaaS Console delivered with recent versions of GlassFish.

DeMichiel stated that Java EE 7 "is Not Just Cloud-y." She talked about "alignment of ManagedBeans across CDI, EJB, JSF" and "further simplifications for each-of-development." Other Java EE 7 planned improvements include "Update to Web Profile" and the concept of "Pruning" (making features such as EJB CMP, EJB BMP, JAX-RPC, and Deployment API as optional features of the Java EE specification). DeMichiel stated that all Oracle-led JSRs are being run openly for greater transparency on Java.net with one project per specification request.

Java Mobile and Embedded was the last featured portion of the keynote. Hinkmond Wong did not get to start on this portion until after the planned end time of the session. Because of this, he had to deal with large crowds of people leaving during his presentation. As a presenter myself, I know how difficult that can be and felt for him. The peak attendance of the session was for the Reinhold portion on Java SE and attendance decreased throughout the remainder of the session, particularly at the beginning of the JavaFX section, at the beginning of the Java EE section, and particularly at the beginning of the Java ME section. I don't think the exodus of attendees was due to the speakers, but is more a reflection of the level of interest in the different subjects. It seems clear that nearly everyone wanted to hear about Java SE. The section of Java Mobile and Embedded is more difficult to gauge interest in due to the fact that it started after the session was supposed to be finished.

Several of the JavaOne 2011 major announcements are collected in the post The Most Exciting Oracle OpenWorld and JavaOne Announcements in One Place. This post appears to be updated regularly and includes announcements from this keynote such as Oracle NoSQL Database (see also Oracle Joins the NoSQL Club), JavaFX 2.0 for Windows GA, and JavaFX 2.0 for Mac OS Developer Preview. More information "under the covers" of Linda DeMichiel's presentation can be found in JavaOne 2011 Java EE Technical Keynote Demo - under the covers.

I enjoyed this opening (technical) kick-off to JavaOne 2011. There were many interesting portions, but the portion I most anticipated was Mark Reinhold's section on SE improvements. The JavaFX 2.0 demonstrations were also especially interesting. The session required more than the advertised two hours to pack in the many different speakers and demonstrations. The opening (technical) keynote provided a good kick-off to the technical content of JavaOne 2011. This session can be viewed directly as described in JavaOne Keynotes: Watch Live!