Since the dawn of the century, Java Enterprise Edition (Java EE) has been at the core of many, if not most, enterprise web-centric, service-oriented, cloud-capable computing assemblies. Lately, though, even its proponents have been asking if the venerable framework has outlived its usefulness, and is being supplanted by lighter, nimbler and simpler setups, such as containers, cloud services, or APIs.
All this is happening just as Java EE made the big screen, getting a mention by some Silicon Valley types portrayed in the movie "Why Him?" (Terrible movie, by the way.)
To answer the existential questions Java EE now faces, Oracle's Java EE Development Team, the defacto caretaker of J2EE, conducted a survey of the Java EE user community to see what direction the framework should go to keep serving its enterprise base.
A total of 1,693 Java EE community members responded to the survey, and these findings are helping to determine the features to be added to the upcoming Java EE 8 proposal. (Thanks to ADTMag's John Waters for surfacing the study.) At last report, it looks like Java EE 8 will be released sometime toward the end of this year.
Oracle Java EE Evalgelist David Delabassee provides his thoughts in an accompanying post, noting how work on Java EE 8 has been revised after reviewing the survey results:
- "REST (JAX-RS 2.1) and HTTP/2 have been voted as the two most important technologies surveyed. and together with JSON-B represent three of the top six technologies. Much of the new API work in these technologies for Java EE 8 is already complete. There is significant value in delivering Java EE 8 with these technologies, and the related JSON-P updates, as soon as possible."
- "We considered accelerating Java EE standards for OAuth and OpenID Connect based on survey feedback. This could not be accomplished in the Java EE 8 timeframe, but we'll continue to pursue Security 1.0 for Java EE 8."
- "We had proposed to add Configuration and Health Checking to Java EE 8, and these technologies rank reasonably high in survey results. However, after additional review we believe the scope of this work would delay overall Java EE 8 delivery. We have concluded it is best to defer inclusion of these technologies in Java EE in order to complete Java EE 8 as soon as possible."• "Management, JMS, and MVC ranked low in survey results, and this ranking supports our proposal to withdraw new APIs in these areas from Java EE 8."
- "We have withdrawn the JSRs for Management 2.0 (JSR 373), and JMS 2.1 (JSR 368), and are investigating a possible transfer of MVC to another community member or organization in order to complete JSR 371 as a stand-alone component."
Here are some highlights from the community survey:
REST for the rest of us: total of 88% community members give high rankings (a "5" or a "4" out of 5) to the importance of new features proposed for JAX-RS, for the next generation of cloud and microservices applications. "The current practice of cloud development in Java is largely based on REST and asynchrony," as explained in the report. "For Java developers, that means using the standard JAX-RS API. Suggested enhancements coming to the next version of JAX-RS include: a reactive client API, non-blocking I/O support,server-sent events and better CDI integration."
HTTP, the next generation: A total of 81% say support for HTTP/2 is important to the next generation of cloud and microservices applications. "The HTTP/2 protocol enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection," the report observes. "It also introduces unsolicited push of representations from servers to clients. On the client-side, HTTP/2 is now supported by all modern browsers and Java SE 9 plans to introduce a client-side HTTP/2 API. The Servlet 4 API plans to introduce server-side HTTP/2 support."
Security state: Another 77% give high ratings to the importance of OAuth and OpenID for the next generation of cloud and microservices applications. "OAuth and OpenID are seeing rapid adoption in cloud environments for authentication and authorization. We could enhance key Java EE APIs such as JAX-RS to better handle these technologies."
It configures: A total of 74% rank standardizing a Java EE application configuration API as important. "In a scenario where applications consist of services, some of which may be deployed to a cloud provider, developers and DevOps engineers face many challenges related to managing application configuration," the report explains. Such challenges include deploying "an application in different environments without cracking its package," and "how to apply configuration for all deployed instances of an application without any redeployment." Such an API can also assist in "how an application can be notified if some of configuration properties are changed."
Healthy choice: For 65%, service health -- introducing a mechanism to communicate the health of the cloud application to the cloud infrastructure - is an important feature they would like to see in Java EE. "Cloud environments typically host large number of services; many of which are often interdependent," the report states. "When problems surface, it is critical to quickly identify potential areas of failure to help fix the problem. Cloud platforms typically provide an Up/Down health check that only provides minimum information. In order for tools to provide an insight into underlying issues, a standards-based health check interface will be helpful. With such interface, service instances would publish their health information in a standard form so that a health monitoring system/service will be able to consume and analyze it uniformly."
No SQL like NoSQL: Among other findings, it was interesting to see a majority, 51%, see it as important for Java EE to support the NoSQL databases that have been percolating all across enterprises, to provide greater support for the next generation of cloud and microservices applications. "Java EE has traditionally focused on standardization of APIs that access relational databases," the report states. "Many applications are starting to choose NoSQL databases to store some or all of their persistent data. The databases may be used as replacements or additions to standard RDBMSstorage. There are diverse categories of NoSQL providers. There is no standard APIs available for developers."
Down with management. As noted above, as Management, JMS, and MVC ranked low in the survey results, it is likely these will be withdrawn from Java EE 8. The Java EE Team reports it has "withdrawn the JSRs for Management 2.0 (JSR 373), and JMS 2.1 (JSR 368)," and is also "investigating a possible transfer of MVC to another community member or organization in order to complete JSR 371 as a standalone component."
(Disclosure: I have conducted project work for Oracle, mentioned in this article, during the last 12 months.)