JavaOne 2012: Strategy and Technical Keynote image15

JavaOne 2012: Strategy and Technical Keynote

JavaOne 2012 is underway. image

While the double entendre of ‘SUNday’ no longer exists, this first day is still an important day. To set the stage, manage expectations, build on the atmosphere and layout the roadmap (starting that sometimes not even subtle massaging of the minds). The keynote sessions are the key events that define scope and themes for the conference.

Java is very much on the move again. After the virtual stand still just before and for a while after Oracle took over (from) Sun, last year saw a dramatic increase in the Java movement. This year that thread continues. Not with many spectacular announcement, but with a solid pursuit of earlier roadmaps and an apparently good collaboration between vendors in the Java space. The one big elephant in the room – that is actually not in the room at JavaOne – is Google. Otherwise for example, Oracle staff happily shared the stage for this keynote session with IBM.

This year’s overall slogan for JavaOne is: Make the future Java.

image

It is very much an invitation from Oracle to help bring the Java platform forward. In many ways: ideas, feedback, testing, propagating, creating code, joining JSR committees etc. Oracle and other vendors have only so many resources – community contributions can help build a greater momentum.

Java SE

As of Update 6, the Java SE JDK bundles FX. Another step in the merge of JavaFX into SE – as the successor to Swing.

Java was made available on two more platforms last year – ports for OS X and Linux/ARM were released in the last 12 months. Prior to that, the most recent new Java ports were Windows 64 bit in 2007 and Linux 64 bit 2003.

Oracle has certified virtually all of its products on Java 7 – claiming that performance on Java 7 is much better than on 6 or earlier version.

The progress of SE 8 (http://openjdk.java.net/projects/jdk8/)is pretty solid – except for Project JigSaw. The modularization continues to present a huge challenge. JigSaw was taken out of the roadmap for SE 8 and is now planned for SE 9 (2015 or thereabouts). SE 8 is targeted for the Summer of 2013, with a feature complete developer preview in February of 2013.

image

Project Lambda (closures in Java) is an important part of SE 8 – it brings some modern language features to Java – underlining the progress of the Java platform. Lambda can be tried out in intermediate builds of SE 8. More on Lambda: http://openjdk.java.net/projects/lambda/. Along with Lambda, Java will have better parallel libraries (says Brian Goetz). One example is the support for bulk operations on collections – that are very easily accessible. An intriguing concept: computeIfAbsent operation on collections.

Project Nashorn will provide seamless integration between Java and JavaScript (bi directional) on the JVM (with much better performance than Rhino does). Along with Nashorn, the team is creating a node.js implementation that works with Nashorn. The Dynalink library provides the basis for the integration between Nashorn and the VM. Nashorn has already pretty good performance. Not as good as V8, especially not at number crunching, but still quite good. Note that Nashorn is also intended to provide the reference example for integration of other dynamic languages with the JVM.

Finally, the Java Date Time API will be modernized. Permgen limitations are removed. Annotations on Java Types are supported and modern packaging and deployment procedures will be supported, for example allowing deployment of Java applications to the Mac AppStore.

Another interesting tidbit: the Java team is moving to a new Bug Database – based on Jira.

And this one (on the JVM): Project Sumatra allows the JVM to be modified so that Java developers can take advantage of new features in the hardware with existing Java language skills. The JVM will be able to decide whether to run the Java code on a multi-CPU or multi-processor.

JavaFX

JavaFX has progressed to release 2.2. NetBeans 7.2 has the SceneBuilder tool integrated into (this visual designer tool for FX can be run stand alone as well). FX runs on Linux/ARM – and any platform supporting JDK 7. FX is go be labeled FX 8 in the Summer of 2013 when it completely merges into Java SE.

A nice tidbit (quoting http://java.dzone.com/articles/javaone-2012-javaone-technical): JavaFX was architected and designed from the beginning to allow for the main UI thread to be separate from background threads, allowing it to take advantage of multiple CPUs.

Note: the former goal of making FX available on any platform – mobile, desktop, browser, TV,… – is no longer there. FX is targeted at the desktop. Period. Not at the browser (as Applet). Not at the tablet (although if serious demand were arise, Oracle would not be unwilling to work on FX for tablets – the technology is ready for it. Note that touch/gestures on for example Ultrabook are supported.

The picture shows some of the themes and features for FX 2.2 and beyond. Oracle staff – when asked – mentioned among others Http Live Streaming (WebSockets), Canvas, SWT interoperability and support for 3rd party UI controls as their favorite features. Some other themes: i18b (internationalization), 3D, Multi Touch and Native Deployment (packaging, distribution and installation).

image

Mobile/Embedded

Oracle does not go after the smart phone market with Java. Google (Android), Apple (iOS) and perhaps Microsoft have cornered that market – end of story. However, Java is well suited for use in many even simpler devices (than the quite powerful computers the smart phones have become). More simple phones and devices such as cars, copiers, multi-media players, smart meters, sensors, micro controllers may very well run Java. The recently released Java ME Embedded 3.2 run time for small devices will do great work for a wide range of devices – of which there are billions. The objective for Java ME Embedded is to turn into a trimmed down version of SE – using exactly the same APIs and libraries, just a subset of the entire SE platform (in the SE 9 timeframe, 2015-ish). It almost sounds like composing an ME profile is balancing SE features vs device capacity and size.

This would mean that doing Embedded Java coding is at the fingertips of every developer who knows Java (SE).

The Java Embedded Suite 7.0 is a small size bundle that contains GlassFish (3.11) and JavaDB. Currently the footprint of this suite is at around 60Mb and Oracle staff believe they can trim it further to just over 20Mb.

In the world of small, JavaCard is the ultimate of small. JavaCard is ideally suited to provide Java functionality in an environment that must be highly secure: even the holder of the vehicle with JavaCard on it may not be able to tamper with it (SIM Card, Public Transportation, Smart Meter). In the 15 years of its existence, JavaCard has not been cracked.

Java Enterprise Edition – JEE 7

Last year’s roadmap for JEE 7 was modified in the Summer of 2012. Getting the standardization around the cloud capabilities done in the available time simply was not feasible. Vendors implementing the various clouds (Cloudbees, Oracle RedHat Open) are learning as they experiment their ways around the cloud and there is not yet enough maturity and stability to talk standards. The Cloud as theme for JEE has been pushed back to JEE 8 (2015). Note: with JigSaw pushed back from SE 8 to SE 9, modularization for JEE is targeted to start in JEE 8. The focus for JEE 7 (release around April 2013) is simplicity, productivity, HTML 5 (WebSocket, JSON, and HTML5 Forms) and continued evolution of the platform. It involves some API pruning, several updated specifications (JPA 2.1, EJB 3.2, Servlet 3.1 NIO, JMS 2.0, JAX-RS) and several new specifications, such as for Batch and Caching.

REST (and JSON) are important elements of JEE 7, with a new Java API for Clients of RESTful Web Services 2.0 and JSON-B for binding JSON to Java Objects, much like JAX-B for XML. JMS 2.0 – the first update in many many years – makes programming with JMS a lot easier, thanks for annotation and resource injection support. Mixing various JMS implementations should become a lot easier.

Support for WebSockets is quite important – as that is an essential element of the next generation of (HTML 5) Web Applications. The Java API for WebSockets 1.0 uses simple annotation to create WebSocket handlers, turning a POJO into a socket publisher/listener. The Angry Bids demo showed an HTML 5 application actively updated from the server side through WebSockets. This demo runs on an Glassfish Build that was promoted on 27th September 2012 – and is available for download to the community (http://t.co/gWXIydoJ).

Project Easel

The combination of JavaFX WebViewer and some of the work on Nashorn was combined resulting in Project Easel – which is providing support for HTML5 as a new project type in NetBeans. NetBeans provides editors for CSS 3.0, HTML 5 and JavaScript – with code completion, click-navigation between for example class property in HTML and the style selector in the CSS file or the JavaScript function references in an event handler in the HTML document and the JavaScript function in the JS file. Easel also provides integration with the Google Chrome browser: selecting an element in the browser will also select that element in the corresponding source file in NetBeans.

image

Even better: step by step debugging is supported, with the HTML and JavaScript executing in the browser and breakpoints in NetBeans being triggered. Any change applied in NetBeans is instantly synched with the browser.

The Chrome plugin makes it easy to preview the HTML page on various ‘devices’ or at least various screen formats:

image

Easel will be made available first in NetBeans 7.3 Beta – to be released early October 2012.

 

Resources

Very good summary of the JavaOne 2012 Technical Keynote : http://java.dzone.com/articles/javaone-2012-javaone-technical …

And the Strategy Keynote is reviewed here : http://www.javaworld.com/community/?q=node/8462

Demo of Project Easel for NetBeans – HTML 5 (JS, CSS) editing and debugging – http://netbeans.org/kb/docs/web/html5-gettingstarted-screencast.html …