What do we take home from JavaOne 2012?
That depends on who you ask. Some people primarily will have taken goodies from the exhibition floors with them while other may have focused on less tangible goods and gone for inspiration and vision. After the heyday (2006/2007), some waning years and the robust recovery (2011) after an initially tentative turn around (2010) this year seems to have been one of consolidation and careful further evolution. Some choices have been made – not all of them popular but most apparently sensible and reliable because backed by commercial sense.
Most of the Java crowd will by now have recognized that Sun Microsystems in its enthusiasm and eagerness tended to bite off more than it could chew. Too many platforms, too many (disparate) products, too rapid evolution and too aggressive release plans. Too little real revenue and too few lasting partnerships based on mutual solid interests. Oracle took over Sun’s legacy. It did not want to dampen the enthusiasm around Java too much – so it pledged continued support for areas that it might not have chosen itself (e.g. Java FX). Oracle did a lot of work in revitalizing the community and the community process, relationship with most important vendors in the Java space (Google being the obvious exception at the present) and re-energizing the evolution of the platform and the language. This resulted in Java SE 7 and Java EE 6 in 2012, to mention two concrete fruits of the efforts – hopefully not an example of too little too late.
The further evolution is being developed in earnest as we speak and was presented last week during the JavaOne 2012 conference – the conference itself being an example of ‘protect against further decline, consolidate and carefully grow again’.
Sometimes it may feel as two steps forward and one (little) step back – but progress is definitely being made and the community is on the move again (not away from Java but embracing it). Note: we at times forget that it is not so much the very vocal early adopting eager developers that are constantly seeking the latest and greatest that are the measure for progress and success of the Java platform. While their opinions count and they help shape the future of Java – the huge world wide community that is not as much on the bleeding edge is more important in the long run. To them, the important factors are: steady growth and long term availability of the Java platform, continued interoperability, backwards compatibility and long term protection of investments in code, infrastructure and people. To not have the latest features all the time is acceptable – the majority does adopt the next major release the moment it appears anyway. As long as there is progress and vision – the most bare necessities at least are fulfilled.
Make the future Java – was this year’s slogan:
Oracle, its partners around Java (IBM on top) and the community are doing that. Not in huge leaps and bounds but in small and steady steps. JavaOne 2012 clearly demonstrated where the progress is (and where not) an more or less how fast it will be. We – the silent majority in the Java community- are specifically invited to participate: provide feedback on plans, specifications and reference implementations, come up with ideas and alternatives, help spread the word and help grow the community around Java – in size, quality and intensity.
Java Standard Edition – the core programming language – is awaiting its Release 8, scheduled late Summer 2013. SE 8 will not have modularization – project JigSaw has been pushed back because of the complexity and in order to allow sufficient time for broad community review and testing of this critical feature (see the section on the Modular Java Platform in http://yakovfain.com/2012/10/04/my-three-days-at-javaone-2012/ for some insights on this). Important elements in SE 8 that are more or less done, include:
- Project Lambda that adds closures to the Java language, for improved developer productivity, better leveraging of multi-core CPUs and bulk data-processing enhancements to the Java Collections Framework (and alignment with several other ‘modern’ languages).
- New date, time and calendar APIs (JSR 310).
- Annotations on Java types (JSR 308), which support the development of useful pluggable type checkers, which refine Java’s built-in type system.
- Merge of JavaFX into SE as JavaFX 8
- The removal of the “permanent generation” from the (HotSpot JVM), which will make its garbage collectors easier to tune.
The JDK 8 for SE 8 is expected to be the merger of the Hotspot JVM (previously of Sun) and the JRockit JVM (previously of BEA). This JVM is expected to perform better than the current JVMs and come with a second-generation Java Flight Recorder for improved monitoring and administration of the JVM. The OpenJDK Community continues to host the development of the reference implementation of Java SE 8. Weekly developer preview builds of JDK 8 continue to be available from jdk8.java.net.
The early specifications for SE 9 have been under discussion for some time now. SE 9 is slated for Summer 2015 and is expected to at least contain project JigSaw.
Other themes for SE 9 are outlined on this slide:
Note: Since last JavaOne, Oracle has published seven Java SE 7 update releases with more than 300 enhancements. The current update is 7U6. An update 7U10 is expected shortly and already available in preview (http://jdk7.java.net/archive/7u10-b10.html). The logic for the jump from 7U6 to 7U10 is explained here: http://www.oracle.com/technetwork/java/java-update-release-numbers-change-1836624.html. Also note that as of 7U6, JavaFX comes bundled with the JDK.
Easel will be made available first in NetBeans 7.3 Beta – to be released early October 2012.
JavaFX is no longer intended for use on SmartPhones. The iPhone, Android and Windows Mobile phones are provided by the respective platforms – there is no room there for JavaFX. JavaFX is targeted at the desktop – to replace Swing – and at smaller devices that run embedded Java. Note: Java Applets are on their way out. Even though FX could be used to develop applets, Oracle sees HTML 5 as the way forward for browser based applications. No new Applet development is recommended and JavaFX is not targeted for that space.
Oracle want to position JavaFX for the desktop and for devices with Embedded Java – a lighter weight subset of Java SE and FX.
Java Embedded runs on very many devices – for example in industrial automation, home automation, home entertainment systems, medical devices, automotive, and retail/informational kiosks. JavaFX embedded is “a proper subset of JavaFX” without dependency on AWT or Swing. (The later point implies that JavaFX Embedded cannot be used with the wrappers for Swing and SWT). NetBeans and Scene Builder are tools common to both JavaFX and to JavaFX Embedded. JavaFX Embedded handles input via mouse and keyboard and touch screens and supports a virtual touch keyboard. JavaFX Embedded’s minimum footprint goal is approximately 16 MB (10 MB from Java Embedded SE and 6 MB from JavaFX Core). Media, Charts, and WebView (future release) will require the cost of additional memory footprint. JavaFX Embedded has a “porting layer” on top of the mostly common code with the desktop. The porting layer is small and includes a Window Manager, special input, rendering, media decoders, and Webnode (future). See this great summary: http://marxsoftware.blogspot.nl/2012/10/javaone-2012-javafx-smart-embedded-devices.html with even more details.
Java FX simplifies a developer’s ability to rapidly create flexible and maintainable user interfaces. Scene Builder also provides an abstraction away from code, so you can now have a design team that builds the basic CSS and component layout and the development team adds the functionality on top. The Scene Builder tool – integrated with NetBeans or running stand alone, its 1.1 version also supported on Linux – allows you to drag and drop UI controls and CSS onto the scene. It uses regular CSS3 so Java developers better start learning it. The processing logic is written in Java with some additional API. You can package JavaFX code into .exe and .dmg installers.
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 will be labeled FX 8 in the Summer of 2013 when it completely merges into Java SE as part of Oracle’s JDK 8 implementation and will be the default UI toolkit for Java SE 8 Embedded, providing a consistent programming environment for embedded system applications and desktop applications alike.
FX 8 (Summer 2013) is expected to provide a Public UI Control API to allow 3rd party developers to more easily and supportedly build custom UI controls. Additional HTML5 “tags” will be supported in the WebView component, enhancing the level of synergy between Java and HTML5 and enhanced 3D support for better data visualization and innovative user interfaces. JavaFX SceneBuilder 2.0 will also support JavaFX 8 features, as well as provide easier interaction with the NetBeans Integrated Development Environment (IDE) and other Java IDEs. Note: Oracle intends to standardize relevant parts of JavaFX through the JCP in the Java SE 9 time frame.
Oracle is releasing a developer preview of JavaFX for Linux/ARM momentarily.
Java Enterprise Edition
Even though the scope of JEE 7 has been redefined – in order to meet the April 2013 deadline for the release – what is left in JEE 7 is still pretty impressive as far as I am concerned. Given that JEE 6 was released late in 2010 after a five year gap since JEE 5, the upcoming JEE 7 is a significant step even without the cloud support that originally planned for this release. Note: 14 Java EE 6 compliant application server implementations are available today, some only having been released quite recently.
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 (10) updated specifications (JPA 2.1, EJB 3.2, CDI 1.1, Bean Validation 1.1, Servlet 3.1 NIO, JMS 2.0, JAX-RS 2.0, HSF 2.2, EL 3.0) and several (4) new specifications: Java API for WebSocket (JSR 356), JCache – Java Temporary Caching API (JSR 107), Batch Applications for the Java Platform (JSR 352) and Java API for JSON Processing (JSR 353).
REST (and JSON) are important elements of JEE 7, with a new Java API for Clients of RESTful Web Services (JAX-RS 2.0) and JSON-P for parsing and constructing JSON structures (similar to JAX-P for XML). The future Jason-B (for binding) spec will offer a simple way of turning a Java object to a JSON string similar to what Google’s GSON library does. But the Jason-B spec won’t make it into Java EE 7 – use the version developed by EclipseLink.
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 Glassfish Build that was promoted on 27th September 2012 contains previews of many of the specifications mentioned above. It is available for download to the community (http://t.co/gWXIydoJ).
The upcoming release is also expected to include a number of capabilities to help increase developer productivity, such as improved resource definition metadata, improved Managed Beans alignment (including transactional interceptors) and method-level validation with Bean Validation 1.1.
Java Mobile and Embedded
Java is well suited for use in many even simpler devices (than the quite powerful computers the smart phones have become) that typically have significant connectivity requirements. Simple phones and devices such as cars, copiers, multi-media players, smart meters, sensors, micro controllers may very well run Java. Java’s independence from the underlying hardware/software platform provides flexibility in CPU vendor selection and easy migration across dissimilar hardware. 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. The Embedded Suite is targeted at creating applications across a wide range of embedded systems including network appliances, healthcare devices, home gateways and routers and large peripheral devices, such as multi-function printers.
To further promote the use of Java Embedded, Oracle launched the M2M platform: http://www.oracle.com/partners/en/knowledge-zone/middleware/m2m-platform-1844484.html. It also heavily promotes Java Embedded through OTN: http://www.oracle.com/us/technologies/java/embedded/overview/index.html.
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.
An important thing with Java is the spirit of the community.
Are Java developers happy and full of energy? Or are they disappointed, disgruntled and even frustrated – bashing Oracle again? Oracle Open World and JavaOne are two different conferences with largely different audiences. They both used to occupy Moscone and now the Java crowd is moved to a trio hotels and a blocked street with an open air lounge. When people stop reminiscing about the old days, that is actually not a bad lay out. The conferences share some of the festivities, including performances by Macy Gray, Joss Stone and Pearl Jam.
The temperature in the Java community this year seemed pretty okay. The conference went well, with many excellent sessions – most not commercially inspired. The news was okay – nothing spectacular, most realistic and with a clear and consistent message. The return of James Gosling to the stage (on Thursday) was definitely a further boost to morale.
As one of my peer bloggers writes: “Oracle is getting much better at handling this Community/partner thing. The Community keynote was very good and as one speaker said, Larry likes to win at everything so if he wants a Community, it will be the best. Oracle is also mending fences. James Gosling was back as a speaker at the Community keynote, talking about some very clever marine robots his current company deploys. The one critical bridge to mend is Google, who used to be a big part of the convention.” [http://blog.idrsolutions.com/2012/10/5-key-things-i-learnt-at-javaone2012/]
Note on Google: the still ongoing court case between Oracle and Google and the related mandate from Google to its employees to not participate in JavaOne is a small cloud over the Java Community. It would be better to have the traditional all -out Google participation. However, this seems to be only a temporary situation: some Google staff attended (somewhat anonymously) the conference and Google employees play a part in some of the JSRs for SE 8 and EE 7. Java is too important for Google to completely let go of the platform (and really take on its own programming platform – look after all to what that did to Sun Microsystems). I would guess that when the lawyers are done, we will be sort of back to normal. For now Google is just the big elephant in the room…
Oracle Press Release: Oracle Outlines Roadmap for Java SE and JavaFX at JavaOne 2012 – http://www.oracle.com/us/corporate/press/1854982
Oracle Press Release: Oracle Highlights Java EE Momentum at JavaOne 2012 http://www.oracle.com/us/corporate/press/1854954
Oracle Press Release – Oracle Outlines Plans to Make the Future Java During JavaOne 2012 Strategy Keynote – www.oracle.com/us/corporate/press/1855360
JavaOne 2012: Observations and Impressions on “Inspired by Actual Events” blog – http://marxsoftware.blogspot.nl/2012/10/javaone-2012-summary.html
Trisha’s Rambling – JavaOne Summary : http://mechanitis.blogspot.nl/2012/10/javaone-summary.html
AMIS Technology Blog: JavaOne 2012 – Strategic and Technical Keynots: http://technology.amis.nl/2012/10/02/javaone-2012-strategy-and-technical-keynote/
Yakov Fain – My Three Days at JavaOne http://yakovfain.com/2012/10/04/my-three-days-at-javaone-2012/
Jim’s Blog – Highlights from JavaOne 2012: http://javajimlondon.blogspot.nl/2012/10/highlights-from-java-one-2012.html
5 key things I learnt at JavaOne 2012: http://blog.idrsolutions.com/2012/10/5-key-things-i-learnt-at-javaone2012/
Simon Ritter: SE 8 and Beyond – http://qconlondon.com/dl/qcon-london-2012/slides/SimonRitter_TheFutureOfTheJavaPlatformJavaSE8Beyond.pdf
Blog article by Kai Waehner on Avatar: http://www.kai-waehner.de/blog/2012/10/02/avatar-as-alternative-for-java-server-faces-jsf-and-javafx-javaone-2012/