Last week’s JavaOne conference provided insights in the roadmap for the Java platform as well as in the current state of things in the Java community. The close relationship between Oracle and IBM concerning Java, the (continuing) lack of such a relationship with Google, the support from Microsoft for Java applications on its Azure cloud and the vibrant developer community – with over 200 different Java User Groups in many countries of the world.
There were no major surprises or stunning announcements. Java EE 7 (release in June) was celebrated, the progress of Java 8 SE explained as well as the progress on Java Embedded and ME. The availability of NetBeans 7.4 RC1 and JDK 8 Early Adopters release as well as the open sourcing of project Avatar probably were the only real news stories. The convergence of JavaFX and Java SE is almost complete; the upcoming alignment of Java SE Embedded and Java ME is the next big consolidation step that will lead to a unified platform where developers can use the same skills, development tools and APIs on EE, SE, SE Embedded and ME development. This means that anything that runs on ME will run on SE (Embedded) and EE – not necessarily the reverse because not all SE APIs are part of the compact profile or the ME environment.
However, the trimming down of the SE libraries and the increased capabilities of devices mean that a pretty rich JVM runs on many devices – such as JavaFX 8 on the Raspberry PI (https://wiki.openjdk.java.net/display/OpenJFX/OpenJFX+on+the+Raspberry+Pi)
The major theme of the conference was Internet of Things. A world of things that are smart and connected, devices like sensors, cameras and equipment from cars, fridges and television sets to printers, security gates and kiosks that all run Java and are all capable of sending data over local network connections or directly over the internet.
The number of devices that has these capabilities is rapidly growing. This means that the number of places where Java programs can help program the behavior of devices is growing too. It also means that the volume of data generated is expanding and that we have to find ways to harvest that data, possibly do a local pre-processing (filter, aggregate) and channel the data to back end systems.
Terms typically used are edge devices (small, simple, publishing data), gateways (receiving data from many devices, collecting and consolidating, pre-processing, sending onwards to back end – typically using real time event processing) and enterprise services – receiving the data-turned-information from the gateways to further consolidate, distribute and act upon.
A cheap device like the Raspberry PI is a perfect way to get started as a Java developer with what embedded (device) programming means and how interaction with physical input and output takes place.
The over all progress on Java is visualized in this overview:
it makes clear that on the Community and Technology (platform) side of things, Java has evolved further in an okay way. No major spikes, no large set backs. Pretty mature. One of the most interesting new developments around Java is probably the rapidly growing involvement of children. Devoxx4Kids (http://www.devoxx.com/display/4KIDS/Home) and other initiatives that involve young people (from age of about 7 onwards) are not only great fun, I also believe that in the long run Java will benefit tremendously from an influx of a new generation of developers that know and love Java. In fact, at the moment they are not even developers.They like to play around, extend Mindcraft – on of the most popular computer games of all time – or make Lego robots move. The advent of the Raspberry PI may well prove another toy to get young people attracted to the world of Java, turning them into developers as a by product of their tinkering with the PI and associated devices. Until this year’s JavaOne conference I had largely been ignoring this community of kids. However, the tremendous enthusiasm in Jim Weaver’s and Arun Gupta’s session and the great demonstrations of platforms like Scratch (http://scratch.mit.edu/), Alice (http://www.alice.org/index.php) and Greenfoot (http://www.greenfoot.org/home) as well as Mindstorm extension development (https://blogs.oracle.com/arungupta/entry/introducing_kids_to_java_programming) and Lego Mindstorms and my sudden realization that my 11-year old son would love all of this and another insight that at AMIS perhaps many more colleagues have children who might enjoy playing with IT in general and Java in particular has convinced me that I should become involved as well.
Additionally I would like to note that while these technologies are good fun for children, some of them are pretty cool for adult programmers as well – for example those developers who are new to the Java platform (and perhaps OO in general) and who could be invited into the world of Java through Greenfoot and BlueJ (http://www.bluej.org/) and some of the other projects and technologies. Is to be continued at AMIS.
A crucial insight around Avatar is: “the server’s role is shifting from hosting application controller logic (and lots of web pages per application), to serving data — often backed by business logic — using standard protocols such as REST, WebSockets and Server-Sent Events, all of which are available to browser based clients.” This does not bode well for Java ServerFaces, which even in its name suggests a very different approach.
The Avatar [approach to Thin Server] architecture is depicted here:
Java 8 SE Roadmap
As stated above: Java 8 SE was not released in August 2013 as was originally the plan. It is now scheduled for March 2014. However, the early adopter release is available and together with NetBeans 7.4 RC1, it is pretty simple to get started (I described exactly how to get started in this blog article https://technology.amis.nl/2013/09/23/giving-java-8-a-spin-using-netbeans-7-4-rc/).
The single biggest change to the Java platform ever: project Lambda in Java 8 SE. This will change the way we write Java code – much more impact even than Generics.
Java 9 and beyond roadmap:
Most important aspect of Java 9 seems to be Project JigSaw, the modularization of the platform and the applications created on it. (the compact profile for Java SE is a first step towards this modularization)
Future of Java EE- with Java EE 7 recently recent, plans for Java EE 8 are already in progress. In fact, many parts of the roadmap for Java EE 8 are almost done and some were originally planned for Java EE 7. An interesting suggestion – I am not sure about its status – is the idea of releasing Java EE 8 APIs as soon as they are ready, rather than waiting for the umbrella Java EE 8 release. This might mean for example that the JCache API is released in the very near future, as could be the JSON-B API. The next step would then be for Java EE container vendors to provide implementations of these APIs as part of incremental releases of their platform products – a bit like the way Oracle WebLogic introduces Java EE 7 APIs in incremental steps.
The overview of the Java EE roadmap is drafted in this slide from the JavaOne Strategy Keynote: no specific features yet, nor specific dates. Just an outline of where the EE platform is heading.
Java SE, FX and Embedded:
Note: The good news is, that all the sessions got recorded and will be available on Parleys in very short time.