Last week took place the largest annual Java Community gathering event JavaOne, with Oracle taking over the stewardship of the event and co-locating it with its annual conference Oracle World.
It was for many JavaOne alumnus a bit different this year as the event was co-located across multiple downtown hotels instead of the usual Moscone Center area. Reactions were mixed among the attendees about the logistics (mostly negative), but in general many felt the sessions were technical enough and marketing messages were kept to a minimum!
The JavaOne keynote Java Strategy and Directions was delivered by Thomas Kurian (Oracle EVP Product Development).
Thomas reviewed Oracle commitments to the Java platform (SE, EE, ME, Embedded), and communicated Oracle 2010/2011 roadmap for the Java platform (let’s keep in the back of our minds that roadmaps are subject to change).
A day later, Mark Reinhold (Java Platform Chief Architect) presented in more details the Java SE roadmap. Both keynotes were actually were informative and gave the audience clarification about Oracle commitment to the future of the platform.
Let’s review some areas of the Java platform in more details (see the links provided in each section for additional information).
Java SE platform objectives were articulated as follows:
- Enhance productivity for Java developers (project Coin and Lambda – aka closures for Java)
- Integrate modularity into the Java Virtual Machine (project Jigsaw)
- Optimize for new processors, memory and networking (fork/join framework/multi threading enhancements, perm gen removal in JVM, new I/O APIs for asynch I/O)
- Improve performance, monitoring and diagnostics (porting of JRockit features to HotSpot)
- Provide JVM support for multiple languages (InvokeDynamic to reduce overhead with dynamic languages and improve performance on multi core architectures)
Java SE 7 (2010) and SE 8 (2011) will be based on the OpenJDK announced releases.
It was also mentioned that a JVM convergence will occur where Oracle will port JRockit features (i.e JRockit Mission Control for example) to the HotSpot VM (see project DaVinci).
Oracle confirmed its support for Java FX but re-architected a bit to simplify its original model with the following goals:
- Programming model = Java behind the scenes and a unified Java FX API
- High performance 2D / 3D Java graphics engine (2D/3D accelerated gragpics pipeline)
- Exploit local hardware capabilities (desktop or mobile, DirectX, OpenGL)
- Integrated development environment lifecycle (assemble, edit, build, deploy, debug)
Oracle also confirmed support for the NetBeans environment with multiple releases in 2011, as well as making Java FX UI controls available to the Open Source community.
The current release 6 of the Java EE stack already includes some of aspects Oracle is looking to extend and complement in the future according to the following goals:
- Make application servers modular with dependency injection (micro kernel based on HK2 reference implementation, OSGI specifications for JPA/JNDI/JDBC/JTA, OSGI and Java EE hybrid programming model)
- Provide new lightweight web profile for web applications (JSR 316 web profile, and clustering support)
- Make POJO and EJB programming even more productive (EJB 3.1 Lite, Dependency injection, WebBeans)
- Enhance web services for better performance and interoperability (JAX-WS, Reliable messaging, standardized interoperability with .NET with compliance with WS-I Basic profile 2)
- Improve interoperability with scripting and dynamic languages
Oracle also committed to supporting the Glassfish reference implementation with two releases in 2011.
Oracle focus on Java ME and roadmap seemed a bit less clear and not as fully flushed out as the other areas of the Java stack, which might indicate that more important changes might be coming in the future.
However, they confirmed the following aspects:
- Modernize Java for mobile devices and language features (project Java Mobile.Next with updates to languages / VM / Libraries / API)
- New device API to access hardware and O/S features (graphics, sensors, payment, telephony, location)
- Small footprint, CPU efficient for Java Card/TV/Mobile (optimization for ARM / BlueRay platofrms)
Based on different discussions I had with Java Platform architects, many have expressed the following thoughts that can summarize the Java Platform/Language basic principles to remain relevant while still evolving:
- Reading is more important than writing (pleasure to read, code should not hide what is happening, code should do what it seems to do)
- Simplicity (clear semantic model, every positive feature adds some negative weight, sometimes it is best to leave features out)
- One language with consistent meaning across platforms
In his blog We Are All the Future of Java, SAP CTO’s Vishal Sikka articulates the need for the Java platform to become an open standard, but also makes the case for an independently managed JCP organization. It is definitely uncertain if Oracle will pursue the same path that Sun started regarding the JCP independence, but we can agree that the more open the platform becomes, the more essential it potentially becomes as a building block of an organization application development strategy.
Why does this matter to us involved in the SAP Ecosystem?
For Java developers, it is critical that the platform evolves and matures as newer technologies appear and provide alternative approaches to solving a specific problem (i.e. DSL for example).
As SAP continues to provide and support Java based solutions and products, it becomes vital for the underlying platform to evolve in an clear and open fashion so the changes can be rapidly incorporated and leveraged by the entire ecosystem (software provider, service provider, customer organization, etc.).
At the end of the day, the ability for organizations and developers to clearly define a strategic platform is critical (private or public cloud based) so it can support most effectively their market differentiation and increase their competitivity over time.
So what’s the New Frontier for Java?
For Java SE/EE/Client areas, it is about performance, reliability, and increased adoption.
In other areas such as Java ME/Embedded, the jury is still out but we hope to see more during next year’s JavaOne and to validate the roadmap Oracle announced last week with concrete implementations!