In a recent interview with InfoWorld, Thomas Kurian, president of product development at Oracle, announced an array of potential improvements being planned for Java EE 8. The move is believed to be designed to appease recent critics (like those coming from the Java EE Guardians) and divergent efforts (like the MicroProfile). Although the current statement seems a mere declaration of intentions, further details are to be unveiled at JavaOne 2016.
The Java development community has been increasingly concerned about the future of Java EE, up to the point that, in May this year, the JCP Executive Committee considered issuing a formal motion to Oracle requesting a public response on its commitment and plans for Java EE. The motion didn't go through, although it was recorded at the minutes of the meeting, which effectively turned it into an unofficial motion. Roughly a month after that, a change.org petition was filed by the Java EE Guardians to encourage Oracle not to drop the ball on Java EE, with 3,300 signatories so far.
One may be tempted to interpret these initiatives as isolated cases from unhappy users; admittedly, several of the Java EE Guardians are former Oracle employees. However, more and more members of the community seem to be adding to the critics: on top of the signatures in the change.org petition, a panel called "To EE or not to EE" was held at Devoxx UK on 8th June, where many developers asked questions and expressed their concern about the future of Java EE, both in situ and over Twitter. Also, library authors have indicated that functionalities in Java EE 8 may be insufficient to provide a viable alternative to the libraries they produce, like Tatu Saloranta, lead developer of Jackson, said when asked about the new JSON-B.
It is in this climate that Oracle has released their promise of further functionality being packed in Java EE 8. While the current JSR for Java EE 8 only includes three new major libraries (JCache, JSON-B and MVC), Kurian has now mentioned all the following:
- Databases: support for persisting data in a key-value store, based on NoSQL, and a transaction model for eventual consistency and relaxed transactions.
- Security: support for both OpenID and OAuth.
- Deployment management: a specification for multi-tenancy application services and support for Docker.
- Asynchrony: a new model for reactive programming and support for asynchronous communication in HTTP/2.
With this announcement, Kurian emphasised that “Oracle has a very clear plan for Java EE 8". However, there aren't any JSRs for the features mentioned, which means either that work still is to be started, which will imply significant delays in Java EE 8, or that Oracle is privately working on these, which would go against the transparency advocated by the JCP. At this point it may be worth to highlight an email allegedly sent by a high-ranking employee at Oracle and that included the following excerpts:
Oracle is not interested in empowering its competitors and doesn't want to share innovation.
The company is slimming down Java EE (Enterprise Edition), but it also doesn't want anyone else to work on Java or Java EE and is sidelining the JCP (Java Community Process). “They have a winner-takes-all mentality and they are not interested in collaborating.”
The email suggests that JCP members publish open letters to Oracle customers to warn them of what is being done to Java. Oracle will never cooperate with any "Java Foundation" and will not release its IP.
Given that these changes are meant to adapt Java EE to the cloud, and taking into account the fierce competition that Oracle faces as a cloud provider (IBM, Amazon, Microsoft, or CloudBees, to name a few, are also targeting that market), it would make sense for Oracle to try and leverage on Java EE so as to increase its market share, even though this would probably come at the expense of antagonising the Java development community. We will have to wait for further announcements in September during JavaOne to understand what the future will hold for Java EE.