Let’s Rewind to the First Half of the Year
2016 — what a year it was for Java EE! As most of you probably remember, around spring time, some worrying rumors started spreading in the Java community about Oracle abandoning Java EE. To make things worse, crucial members of the Oracle Java EE team were leaving, including Cameron Purdy, Reza Rahman, Mark Heckler, and John Clingan.
On top of that, various discussions on the Java EE spec mailing list seemed to suggest that the priorities had shifted and the Oracle team was not focusing as much on Java EE development as was expected from the community. All this was happening with no further explanation from the Oracle team.
The low number of Oracle source code commits to their own Java EE implementations, together with their decision to push the release of Java EE 8 even further back to 2017 raised many concerns from the community.
Understandably, the lack of activity from Oracle caused a lot of criticism from the community and — among other things — resulted in the development of a new initiative called the "Java EE Guardians" led by Reza Rahman — an ex-Oracle Java EE and GlassFish Evangelist. The group, concerned about Oracle’s lack of commitment to Java EE, was set up with an aim to move Enterprise Java forward. Their purpose, as explained on their official website, is ‘advocacy, raising awareness, finding solutions, collaboration and mutual support.’ The Java EE Guardians members list includes ‘the Father of Java’ James Gosling, various members of the executive committee of the Java Community Process, Java EE specialists, Java Champions, and bloggers — many of them having real influence on further Java EE development.
Finally, in July 2016, Oracle's Vice President of Marketing Communications and Global PR Mike Moeller issued an official statement reassuring that Oracle is ‘committed to Java and have a very well defined proposal for the next version of the Java EE specification — Java EE 8 ‘; and that the company is ‘working closely with key partners in the Java community to finalize the proposal and will share the full details with the broader Java community at JavaOne ’
JavaOne: The Turning Point
So, hearing Oracle’s promise, the community was waiting for the revelations and updates on the current and future status of Java EE, expecting that these should come up during the keynote at the JavaOne conference in San Francisco. I remember myself watching the keynotes' online stream in my hotel room, getting more and more impatient as the minutes went by and no facts or even hints on the Java EE future had been revealed. Finally, Anil Gaur, Oracle’s VP for Java EE and Application Server Development, came on stage to explain the overall direction of Java EE and the roadmap for Java EE 8 and 9. The proposed enhancements for Java EE, as presented by Gaur, were:
- New AppDev style for cloud and microservices
- Build on proven technologies
- Comprehensive programming model, packaging, portability,
- Standards based – proposal only, will work with the community and follow the JCP process
Probably the most important announcement was the roadmap confirmation, stating that Java EE 8 will arrive at the end of 2017, while the work on Java EE 9 is starting right away to enable its delivery in 2018. Gaur didn’t respond to any of the Java EE community’s worries and doubts, but he did highlight that the theme for the future Java EE releases is a new application development style for cloud and microservices.
A slightly disappointingly short and brief session from Anil Gaur was complemented later on during the conference by Linda DeMichiel, Java EE 8 specification lead, who presented a full proposal for Java EE 8 JSRs, finally giving the community some specific information that we could hold on to. During her presentation, DeMichiel gave an overview of the revised proposal for Java EE 8, highlighting that things might change as the expert groups work on the specific JSRs. She explained the main technical focus areas for Java EE 8 and why Oracle decided to implement the proposed changes.
Both DeMichiel and Gaur stressed the importance of Java EE Community engagement in the next release’s development and urged the community members to share their feedback in the newly launched survey. The results of the survey — we were told — will shape the future direction of Java EE development.
As I dive a bit deeper into the details of the proposal when discussing the community survey results further down below, I won’t be summarizing Linda DeMichiel’s presentation here. If you want to see more, check out the presentation slides or the full presentation recording.
Java EE Community Survey
The initial lack of interest in Java EE development in the first half of 2016 showed on The Aquarium — the official GlassFish blog. It went awfully quiet, especially after Reza Rahman left the team. Since his last update posted in March 2016, we had to wait 9 months until the next article was published by David Delabassee, who replaced Rahman as an official Oracle Java EE evangelist. His first post, after a long break, was a very short article titled ‘A quick update on Java EE’ published two months after the JavaOne conference and didn’t really add anything new. It only confirmed that Oracle is now officially withdrawing Management 2.0 (JSR 373) and JMS 2.1 (JSR 368), following up on the keynote announcement by Anil Gaur. The decision, as Delabassee highlighted, reflects the importance ranking of these technologies in the Java EE 8 community survey. The survey results were released a month later in December on The Aquarium blog, and these were — finally! — much more interesting.
To summarize the survey results; REST (JAX-RS 2.1) and HTTP/2 (Servlet 4.0) have been voted as the two most important technologies, and according to Oracle, the majority of the new API work for these (and JSON-B) in Java EE 8 is already complete. Accelerating Java EE standards for OAuth and OpenID Connect could not be accomplished in time for the Java EE 8 release, but Oracle will continue to work on Security 1.0. Interestingly, the original keynote proposal was to add Configuration and Health Checking to Java EE 8, which were both ranked quite high in survey results. However, Oracle decided to defer their inclusion in Java EE 8 to avoid possible delays within the planned release timeframe.
Just before the JavaOne conference, the Java EE Guardians, together with DZone, also conducted a community survey to help determine the features that should be included in Java EE 8. The results of both surveys were very similar, which is, of course, good news for the community, as long as Oracle sticks to their plans which are based on the results of their original survey. See here for the full Java EE Guardians survey results.
MicroProfile: Vendors Joining Forces
We can’t give a complete recap of what’s happened with Java EE in 2016 without at least mentioning the MicroProfile initiative.
Launched at the end of June by Payara, Red Hat, IBM, Tomitribe, and the London Java Community, MicroProfile initiative’s goal is to make it easier for developers to use familiar Enterprise Java technologies and APIs for building microservice applications. Its mission is to allow an open forum to optimize Enterprise Java for a microservices architecture by innovating across multiple implementations and collaborating on common areas of interest with a goal of standardization. During their first official announcement at the DevNation conference in June, the MicroProfile members gave an outline of their views on the MicroProfile and how they saw it fitting into the established ecosystem of microservices, where the impression is that Java EE is lagging behind the likes of Spring Boot, Dropwizard, and others.
In December 2016, the Eclipse Foundation Board of Directors unanimously approved the Eclipse MicroProfile project joining the Eclipse Foundation under the Apache License v2.0 (ALv2). MicroProfile 1.1 is currently underway and should be released in the next couple of months. The community has decided to focus the next release on configuration, security (JWT token exchange), health check and fault tolerance. For the most up-to-date information on the future direction of the MicroProfile initiative, have a look at John Clingan's (representing Red Hat) presentation slides. You can also follow the discussion for regular updates on the MicroProfile Forum.
Where Are We Now?
The proposal to withdraw Management, MVC and JMS improvements was confirmed by the low results for these in Oracle’s survey. At this point (February 2017), Oracle confirmed that the MVC transfer ballot has passed which means they can now proceed with the paperwork. Ivar Grimstad (Cybercom, Java Champion, and the JCP Exec Committee member) confirmed that he will be the receiving party of this transfer and will become a Spec Lead for JSR 371. He added that the JSR will be layered on top of JAX-RS, which means that the stuff developers are familiar with from JAX-RS is now directly transferable to MVC (for more info check out Ivar’s GitHub project).
In his recent update on The Aquarium Blog, David Delabassee confirms the following progress on Java EE 8:
- JSF 2.3, JSON-P 1.1, and CDI 2.0 are now in Public Draft.
- There are now two proposals for a Reactive Client API and Server-sent Events.
- A Non-Blocking IO providers feature is due to be discussed next in the JAX-RS Expert Group.
- There’s been some progress with the Bean Validation 2.0 and an Early Draft Review should be available shortly (see the draft as it progresses).
- The Servlet 4 Expert Group is making progress while the details of HTTP/2 (e.g. Server Push) are currently being discussed (see more here).
- Discussions on the Security JSR (JSR-375) are expected to start very soon.
Four Java EE 8 specifications are now in public draft (JSON-B 1.0, JSON-P 1.0, JSF 2.3 and CDI 2.0) and the community members are encouraged to get involved, test and provide feedback (see the Adopt A JSR webcast). There’s also been some increased activity around GlassFish 5 and Oracle are working to ensure that the Java.net dismissal doesn’t impact Java EE related JSRs and the different RIs including GlassFish. According to Delabassee, Oracle plan to share more details on this as soon as possible.
Things Are Moving Forward
Now that we’ve entered 2017, it is plain to see that Oracle is putting much more effort in implementing their plans for Java EE. The Java EE 8 release has an aggressive schedule and the spec leads and community members are sharing updates on the JSRs (see the summary here). Although 2016 was quite turbulent, and sometimes even dramatic due to the lack of activity in the first half of the year, the pressure from the community and the presence of some strong community initiatives such as The Java EE Guardians and MicroProfile seemed to make a significant impact. Whether or not Oracle’s actions have been influenced by community-led pressures, I stay positive in my outlook for Java EE's future. If there is one lesson we’ve learned from all that happened in 2016, it’s that the community has great power and great ideas to move things forward and help with technology progress. Let’s stay together, work together and contribute, just like we did in 2016, at the same time keeping a close eye on what’s happening with Java EE and MicroProfile developments; or get involved and help drive forward new specifications and APIs.
And if you want to dive into more technical details, you can watch the most recent presentation by the Payara Support Engineer and Java EE Guardians Member Ondrej Mihalyi, where he discusses the current progress with Java EE 8 development and talks about future direction of the MicroProfile initiative — all this supported by some coding and demos.