Staring Into My Java Crystal Ball
Jan 6, 2017 | 6 MIN READ
Jan 6, 2017 | 6 MIN READ
Many years ago, when I was working at Sun doing Java Evangelism, a friend of mine bought me a genuine crystal ball. He said I was always trying to tell people about the future of Java, so I might as well be appropriately equipped.
Since this is the first week of 2017 (happy new year), I thought I’d get my crystal ball out and risk making some predictions about what will happen in the world of Java during the next twelve months. I’ll write a follow-up at the end of the year to see how well I did.
2017 promises to be an exciting year for Java for many parts of the ecosystem.
The current schedule for the JDK 9 project on the OpenJDK website gives the date of general availability as the 27th July (for fun someone has created a countdown website for this, here). To hit that date the milestone of ‘Feature Extension Complete’ should have been completed just before Christmas (22nd December). This milestone is defined as all “JEPs and small enhancements that have been granted extensions via the FC extension-request process must be integrated into the master forest”. Although nothing has been stated publicly on the jdk9-dev mailing list, this milestone seems to have been reached. There are 90 JEPs to be included in JDK 9 and, with one exception; they all appear to be in a status of either completed or closed/delivered. The only one not in this state is JEP 298, Remove Demos and Samples. I don’t think we need to be too concerned about that one causing further delay.
Project Jigsaw still has a number of unresolved issues, but hopefully, these will all be dealt with before February 9th, which is the milestone date for having all tests run.
Although JDK 9 does not bring significant changes to either the Java language or class libraries, the impact of modularisation of the Java platform should not be underestimated. Several things may affect the backward compatibility of your application if you have used (directly, or indirectly by using a third-party jar file) any of the non-public APIs included in the Java runtime. Reading the jigsaw-dev mailing list shows that some of these can be quite subtle and unexpected.
I think all Java developers should make one of their new year’s resolutions to test their applications with the early access builds of JDK 9 (available here), or at least run the jdeps tool on their jar files.
Enterprise Java seemed to have stalled earlier last year but, thanks in no small part to the community; it looks like things are back on track. At last year’s JavaOne Oracle announced that the Java EE 8 specification (JSR 366) would be completed by the end of 2017, with Java EE 9 to follow only a year later.
There has definitely been movement in the right direction with JSR 366 publishing a second review draft in November last year. A survey was also launched shortly after JavaOne to poll the community on what were the most desirable features they’d like to see in Java EE 8. The results of this were posted shortly before Christmas with REST services and HTTP/2 being the most popular of the choices.
Related to this are the efforts to standardise Java for use in a microservice architecture. We’ll have to wait and see how the microprofile initiative progresses and whether Java EE 8 and Java EE 9 affect its relevance as a standard.
The micro edition of Java is not dead, yet, but certainly, isn’t showing any signs of life. A quick search online for news related to Java ME doesn’t bring much back (bizarrely, the most recent article I could find that mentioned it was my own discussing the JCP). With the imminent release of Java SE 9 it would seem logical to expect an associated release of Java ME. My crystal ball is a little cloudy in this area, but I suspect that won’t happen.
Although Java ME has always been targeted at embedded applications, not all embedded systems need to use it. The continued reality of Moore’s Law means that, what was a server 20 years ago, is now a system-on-a-chip (SoC), as demonstrated by the Raspberry Pi. The impact of this is that many embedded devices can now run an implementation of Java SE since they have adequate resources. With modularity coming in JDK 9, this will be even better by potentially reducing the Java platform footprint.
Here at Azul, we’ve been doing a lot of work in this area helping with the OpenJDK port to ARM and producing Zulu embedded binaries. Expect to see a lot more of this during 2017.
I predict the Java community will continue to grow and thrive this year with many great events already in the calendar. To name a few there’s Jfokus in Sweden next month, the first Devoxx in the US as well as Devoxx events in the UK, France, Poland and Morocco. We also have JavaLand again this year and a whole host of other smaller events; I’ll be trying to get to as many of these as my time and travel budget will allow.
It’s evident that 2017 will bring significant changes to many aspects of the Java platform, but I think it’s safe to say that Java will continue to be the most popular development platform on the planet.