Modernizing Java EE (Enterprise Edition), the server-side version of Java, for the cloud and microservices will require two critical upgrades to the platform. Version 8 is set to arrive in late 2017, followed by Java EE 9 a year later, Oracle revealed on Sunday.
Although Java EE already in use in cloud deployments, Oracle sees a need to better equip it for this paradigm, said Anil Gaur, Oracle's group vice president of engineering, at the JavaOne conference in San Francisco. To this end Java EE 8, which had already been mapped out, will receive two additional sets of capabilities: one for configuration of services, and the other for health checking to monitor and manage services communications.
Oracle will publish Java specification requests (JSRs), which are official amendments to the Java platform, detailing these two efforts. Java EE 8 had been scheduled to arrive by next summer, but the additions will push the release out several months. Java EE 8 also will be fitted with enhancements previously specified, such as ease of development.
The configuration specification will enable services to scale horizontally and help specify capabilities such as quality of service. These details will be maintained outside the application code itself so when the service expires, the configuration code is still there for use with a similar service, Gaur said. With the health service specification, a consistent set of APIs will be featured so that services can communicate the health of services and developers can specify what corrective measures may need to be taken.
Java EE 9, meanwhile, will foster deployment of smaller units of services, which can independently scale. Key-value store support for using databases such as MongoDB and Cassandra is planned, along with eventual consistency in transactions. Oracle also is exploring support for a server-less model, where code is taken care of in a runtime environment. A state service and multitenancy for tenant-aware routing and deployment will also be considered, along with security capabilities for OAuth and OpenID.
Java EE has been the subject of much debate in recent months with proponents upset over a perceived lack of direction for the platform. In response, Oracle first expressed its cloud intentions for Java EE in July. "Developers are facing new challenges as they start writing cloud-native applications, which are asynchronous in nature," Gaur said.
Vendors have begun using Java EE APIs to solve these problems. But each vendor is doing it in its own way, with consistency lacking, Gaur said. With no standard way, it is impossible to ensure compatibility of these services.
Gaur also highlighted use of a reactive style of programming for building loosely coupled, large-scale distributed applications. Moving to the cloud requires migrating from a physical infrastructure to virtualization as well as a shift from monolithic applications, he said.
Also planned for Java EE is comprehensive support for HTTP/2 beyond the support that had already been planned for the Java servlet. A Docker model, enabling packaging of multiple services in a single container, is planned. Work on both Java EE 8 and Java EE 9 is proceeding in parallel, Gaur said.
Asked whether users might wait the extra year for Java EE 9 rather than first upgrading to Java EE 8, Gaur said that might be OK for some people. But others must move at "cloud speed" and need things more quickly, he said.
Multiple parties, including Red Hat and IBM, have been pondering their own improvements to Java EE, believing that Oracle had been neglecting it. But Oracle says its silence simply indicated it had been reflecting on what to do with Java EE.
Oracle on Sunday also detailed some intentions for Java SE, the standard edition of the platform, aside from what already has been specified for the upcoming Java SE 9 platform. Plans include making it easier for developers to deal with boilerplate code by making these code classes easier to read, said Brian Goetz, a Java language architect at Oracle.
Also at JavaOne, Oracle announced its intention to soon distribute the Oracle JDK with Docker, the popular Linux container platform. "We want to make Java a first-class citizen for Docker and we want to do it with a distribution model that makes sense," said Georges Saab, Oracle's vice president of development. Java and Docker have not been strangers to each other previously, with Docker already popular as a mechanism for providing improved packaging.