JavaOne is the annual largest Java developer conference, held in San Francisco. Since Oracle’s acquisition of Sun Microsystems in 2010, the conference has been hosted by Oracle.
This year’s conference theme “Make the Future Java” was instilling the bigger picture. As noted in a Keynote session, there are different aspects to making the future: a) ensuring the platform stays competitive and b) making sure the process for platform development works well. Since the Java platform and standards are evolved in a collaborative manner, the health of the community is key to long term platform competitiveness.
Though currently popular, Java is widely viewed as facing challenges:
- Java is considered old-fashioned by some new generation developers who prefer dynamic languages and web technologies. In particular, Java language syntax is thought to be too verbose, and things like missing closures is a showstopper for many.
- Java platform evolution stagnated when 4.5 years passed between Java 6 and 7 releases, with little progress in the development of core language or platform. Innovation happened mostly elsewhere, such as in OSS communities.
- A platform risks losing market share and getting fragmented if the pace of innovation is not fast enough. This was one reason why Android is not Java (ME) compatible. Java is currently losing market share as a smart phone platform. Platform fragmentation risk posed by Android may be an even more serious challenge.
Java platform evolves through an open and collaborative process, the Java Community Process (JCP), which governs the rules for creating Java standards. The JCP process is considered as one of the core strengths of Java. But is it also slowing down innovation? Standards are hard to change afterwards.
Community
Oracle is a huge company with vast amounts of resources in-house. But no one IT company can be self-sufficient, and long term success of Java is tied to the larger developer ecosystem. The ecosystem needs commitment from the developers and partners to stay healthy. Oracle needs to make sure Java is the platform where developers want to invest their human capital also in the future. The importance of community engagement was visible throughout the conference which, in my view, is an acknowledgement from Oracle of the huge role the community is playing. But it’s not just the conference keynotes where this was present: Oracle has been working on this for some time with several initiatives.
Recent changes in the Java Community Process (JCP), that governs the rules for creating Java specifications, require expert groups to conduct their specification work in a very open and transparent way. By making OpenJDK the Java SE reference implementation (RI), Oracle has leveled the playing field for other Java SE vendors, as now Oracle’s Java implementation is only one Java SE implementation that has to conform to the specification and RI. Oracle has been able to engage IBM in OpenJDK instead of Apache Harmony, which I think overall will reduce the risk of fragmentation and benefit the whole Java community.
Active participation by Java technology licensees, vendors, open source and application developers seems to be encouraged. One concrete initiative for engaging developers is the “Adopt a JSR” program. The purpose of this program is to prevent bad specifications from happening by engaging ordinary developers in the specification process.
Roadmap
An important part of the Java roadmap is the release strategy. Feature-based release cycles can lead to unpredictable schedules when problematic features or scope creep can make the release dates slip. This happened during Sun Java stewardship and, many in the community feel this led to uncertainty about the future of the platform. Often it’s better to make regular releases, so that a single missing feature doesn’t hold back the entire release. To tackle this issue Oracle has stated their commitment to more regular major platform releases.
The next major Java version, Java 8, is scheduled for Q3 2013 with public developer builds available already for testing. Some highlights include Lambda expressions (closures), parallel operations on core collections API, a new JVM based JavaScript implementation and Java ME/SE convergence. Java 9 is currently scheduled for 2015. Release content is still open, but the release is planned to include the Jigsaw modularity mechanism for the JVM as well as the bundled class libraries. This would make evolving the platform and libraries easier in the future, but allow optimizing application memory footprint, thus enabling SE and EE applications to be run on smaller devices than today. In cloud environments reduced footprint allows higher tenant densities. Java vendors Red Hat, IBM and Oracle demonstrated their interest in polyglot programming support, or the practice of using several different programming languages for implementing a software system. A major part of the plumbing required for good polyglot support was included in Java 7 and incremental improvements are expected to follow.
In the Enterprise development space, the previous platform version, Java EE 6, was released in 2009. Java EE 7 is scheduled for Q2 2013 and the release themes are continued developer productivity and HTML 5 support.
Java ME / Embedded
There was a strong focus on embedded platforms and tools at JavaOne this year, with a lot of airtime being devoted to it. Previously, Java ME has been the platform for limited devices, such as feature phones. Now, the focus of Java embedded appears to be on “Internet of Things” and headless microcontroller and low-power device platforms. Focusing on the embedded, and not the mobile space, seems only natural given the current market realities: Java ME enabled phones have been losing market share and ME will likely continue losing ground.
Traditionally ME and SE/EE development were regarded by developers to be very different, and were performed by people with different skill sets. To address this problem ME and SE platforms will converge both on platform and API level (in Java SE 8 timeframe). The merge of JCP executive committees for ME and SE will help the platforms from diverging in the future.
One area with high expectations is the emerging ARM micro server market. Java 7 has released for Linux on the ARM platform, so it’s possible to run Java based programs for example on a Raspberry Pi system.
Conclusions
Emergence of the embedded market and convergence of standards and platforms will provide interesting opportunities for Java developers in the coming years. If “regular” Java developers are able to do embedded development effectively, there will be a huge number of potential developers for that space.
Oracle has stated their intent in pushing the Java platform forward at a steady pace to make the roadmap more predictable. Useful and interesting new features and modifications have been identified for the core language, runtime platform as well as APIs for the Java pipeline. It’s reassuring to see that Oracle is investing in changes with possibly more far-reaching implications, such as Jigsaw modularity. Many people are also working on extending Java platform’s reach over other programming languages.
Despite challenges Java still has a strong position as an enterprise software development platform. It has potential to grow as a viable ecosystem and technical platform also in the future. Oracle has been taking decisive steps to move the platform forward. But it’s not just Oracle’s Java: a lot of organizations and individuals have invested in the platform more collaboratively than before.