As a long-term Java EE developer, consultant and lecturer, over the years I've seen Java EE evolving into a solid, carefully thought out, flexible platform, and one of the most lightweight enterprise frameworks. Therefore I was very surprised to read so many negative and incorrect claims about Java EE in the recent Gartner report "Market Guide for Application Platforms", written by analysts Anne Thomas and Aashish Gupta. The report claims that Java EE is not lightweight, has become obsolete and hasn't kept pace with modern architectural trends. These statements are made very confidently, yet are rather surprising, especially coming from such a well-known advisory company!
The Java EE platform has been very successful in providing a standardized and mature ecosystem to power various needs in the enterprise, as well as for smaller and more agile projects, ensuring long-term backward compatibility. Its productivity has increased a lot in the past years. It's no longer a waste of resources to spawn a separate JVM process per each Java EE application. According to the analysis of Antonio Goncalves, a respected software architect, technical author and a member of various JSR expert groups, "most app servers boot in less that 3 seconds" and "most app servers use less than 150Mb of RAM", while many use even less than 50MB.
In the light of these facts, the recent Gartner analysts irresponsibly provide obsolete information about the Java EE platform. They base most of their statements on very "traditional" and out-dated ways of building and running Java EE applications in a 3-tier architecture, using Oracle WebLogic and IBM WebSphere servers as a reference. There is clearly much more in Java EE than these two; IBM, for instance, offer a more forward looking platform in the highly modular WebSphere Liberty Profile server as an alternative to their flagship product. Other vendors and projects, like WildFly Swarm, sponsored by Red Hat, or our own Payara Micro, derived from GlassFish Server, prove that Gartner's claim "Java EE is a framework for building three-tier client/server applications" no longer reflects the reality. These kinds of oversights degrade the credibility of Gartner's report.
Gartner further complains about the pace of Java EE. They completely disregard the fact that vendors evolve their Java EE servers and runtimes continually with extensions and improvements, with many minor releases. It's only natural that sometimes the standardization process slows down as there are so many shifts in current trends, and so many approaches that there is little to standardize.
To deal with current ever-changing trends, some of the biggest vendors including Red Hat, IBM and Payara, decided to take part in the MicroProfile initiative. MicroProfile is an effort to unify the innovations much faster than it's currently being done within Java EE, and feed the standards body with practical proposals after the innovations mature. Java EE plays a huge role in the standardization of the approaches proven mature by MicroProfile and other frameworks like Dropwizard, Spring Cloud, and Play framework. While the fast-evolving frameworks suit smaller and dynamic projects with specific needs, common and standard-oriented platforms like Java EE provide solid support for long-term investments. The old African proverb applies here: "If you want to go fast, go alone. If you want to go far, go together."
Another misleading part of Gartner's market guide is the implicit claim that Java EE platform sales decline in favor of revenues from aPaaS services. First, Oracle's and IBM's decline in application servers sales revenues, when faced with opensource offerings, doesn't imply that the overall usage of the Java EE platform declines too. In fact, companies often migrate to more flexible and cheaper open source Java EE solutions, which fit their needs better. This is a good thing for Java EE because it proves the promise of the standard specifications works in practice.
Second, many mentioned aPaas solutions offer services heavily based on Java EE technologies like Red Hat's Openshift. Java EE domination continues to prevail, but it's transforming from traditional on-premise servers to cloud-friendly runtimes and Java EE based aPaaS products. Almost all mentioned PaaS offerings are geared towards Java EE, or at least support it via Docker. The "lightweight WAR" approach of Java EE fits the Docker model better than any executable JAR approach, as demonstrated by Adam Bien. Bruno Souza and Elder Moraes also testify that "Combining Java EE and Docker is not only possible; it is a powerful way for teams to develop and deploy portable, scalable HA services".
The question is why the market guide specifically targets the criticism at Java EE per se? It makes much more sense to discuss the place of Java and JVM frameworks in general in building cloud-native applications, competing with other technologies like Node.js or function PaaS platforms. The nature of the Gartner report, and the recent announcement of Google joining the Cloud Foundry Foundation, leave the door wide open for speculation.
Think twice before you follow recommendations of technologies that are more lightweight and convenient than Java EE, especially if they come from sources whose knowledge of the current status of Java EE is most likely incomplete. Remember that adopting an unreliable technology, or switching to a new technology with no clear advantage, are the most expensive and risky choices to make in the long run.
Instead, I would recommend taking the approach of evolutionary architecture described by Neal Ford, a software architect from ThoughtWorks, and focus your effort on building modular Java EE applications that can be adjusted to whatever needs you'll be facing in the future. If Java EE is no longer suitable for some modules, consider using frameworks that are compatible with a subset of Java EE specifications to reuse your knowledge. Although, it's likely that you'll need to involve a completely different approach to power those edge cases.
Rather than listening to Gartner, ask architects or experts whom you trust for recommendations based on their experience - or, simply see for yourself and compare. If you explore beyond the "traditional" Java EE servers mentioned by Gartner, you will realize that Java EE is already suitable for designing cloud-native applications. The Java EE platform, with its full ecosystem, provides flexible ways to run applications and is easily extensible for any current trends, as well as any future trends to come.