This article was written by John K. Waters and was originally published on Application Development Trends (ADT) Mag on 16 February 2017.
I’m not sure what I expected when I finally connected with Gartner Vice President and Distinguished Analyst Anne Thomas last week to discuss a research note she co-authored that took heavy fire from critics in the enterprise Java community. But her chipper, glad-to-help-out response to my interview request shouldn’t have surprised me; in the roughly two decades since we first met, I’ve found Thomas to be a responsive and thoughtful industry watcher with a relatively thick hide.
“It’s my job to be controversial if that’s what’s needed,” Thomas told me, “to make people take a step back and look at what’s really going on.
What did surprise me was Thomas’s contention that she and her critics are essentially on the same page.
Thomas wrote the report (“Market Guide for Application Platforms”) with contributing analyst Aashish Gupta. In it the authors asserted, among other things, that Java EE has not kept pace with architectural trends and digital business initiatives, that Java developers are demonstrating a clear preference for lightweight frameworks over Java EE, and that Java EE is not an appropriate framework for building cloud-native applications. They also advised those responsible for modernizing an enterprise’s application infrastructure to “develop a strategy to deal with the obsolescence of Java EE and other three-tier application frameworks.”
Java EE community leaders called the Gartner analysts irresponsible and out of touch with the platform, and many blasted the report in blog posts and social media (and my inbox). I interviewed several of those critics for my January post, which includes links to some of the blogs.
Thomas was a bit surprised at the level of outrage over her and Gupta’s observations on what she believes are obvious facts about Java EE and the evolving demands on enterprise developers.
“In the note I definitely acknowledged that Java is a tremendous platform for developing enterprise applications,” she told me. “But Java EE is, by definition, this amalgam of this massive number of APIs, all of which the certification process says must be present in the platform. What I’m saying is, people don’t need 90 percent of the stuff sitting in Java EE to build modern enterprise applications.”
Some critics argued that Thomas and Gupta failed to recognize that Java EE has evolved since version 5 and the J2EE era, and that lighter-weight enterprise Java technologies, such as the Web Profile, IBM’s WebSphere Liberty Profile, Red Hat’s WildFly Swarm, Payara Micro and the new Eclipse MicroProfile, have emerged. Others insisted that the admittedly slower pace of Java EE’s evolution is a strength of the platform; it’s standards-based, which matters in the enterprise.
But the critics are, if inadvertently, helping to make Thomas’s point, she said.
“I’m 100 percent in agreement with a lot of what these guys are saying,” she said. “But they’ve got it in their heads that Java EE means all of Java. The new MicroProfile, for example, is just three Java APIs. That’s great, but it’s not Java EE.”
Everyone understands that Java EE is overgrown, and none better than Thomas, who was working at Sun Microsystems when the platform was conceived and the seeds of that growth were planted.
“The original intention behind Java EE was to make sure that everything you could possibly want in the enterprise Java space was going to be available in any application server you decided to deploy it on,” she recalled. “It was all about portability. If I’m building a Java application, I know I’ll have this specific set of APIs and these specific versions, so that when I’m building an application I’ll know it’s there. That was a valuable proposition when Java EE was first created.
“The problem is it ended up becoming this incredibly bloated environment. Do I really need CORBA in applications that I’m building today? In the next version of Java EE, they are going to remove CORBA, so there is evolution happening. The Web Profile took out a bunch of things, and it’s a much better environment for building application than a full-bore Java EE. But it’s still very focused on three-tier, where the front-end tier is a Web environment. It’s not designed to support multi-client-, multi-channel-type applications. It’s not designed to support both Web and mobile, much less 20 or 30 other types of systems that are out there. It’s not very well suited to support Internet of Things applications. And it’s not designed to support microservices, which is why this independent group has gone off and said, we have to have a MicroProfile for Java EE.”
One of the criticisms leveled against Thomas and Gupta’s report was that they failed to differentiate between the Java EE standard and what Java EE vendors are building.
“Again, that supports my position,” Thomas said. “What the vendors are building is not in conformance with the standard. They are building much smaller, much more focused implementations. They’re not including everything but the kitchen sink in case somebody might need it.
“If you look at something like the Jetty Web server, for example, which a lot of people are using now to build their applications, I think it’s now about 12MB in size. Compare that with the WebLogic platform, which is over 3GB in size. Why do I need such a big platform to host a microservice? It would be insane to use it. What I want is to embed Jetty, or Undertow, or Tomcat into my Spring Boot component, which is now an independently deployable component. I don’t have to deploy it into an application server. I just put it into a container and deploy it directly onto my VM. That’s what the new environment looks like.”
Effectively, she went on to argue, Java EE and enterprise Java are no longer the same thing. And a modern enterprise Java platform for modern applications is emerging, not from Oracle or the older standards bodies, but from open source communities.
“Over the past five years, maybe longer, the open source communities have literally displaced the big standards bodies as a way of ensuring fast innovation and commonality across different systems,” she said. It takes years for new standards to get produced through the Java Community Process (JCP). And that process is even slower now that Oracle is running the JCP. The fact is, open source in general is a much more effective way of creating community standards. Communities like Spring, CloudFoundry, Eclipse, Apache — that’s where innovation in Java in particular is happening.”
Thomas also expressed her admiration for the work of groups like the Java EE Guardians and the MicroProfile.io initiative, but insisted that they aren’t protecting Java EE, but enterprise Java.
“The MicroProfile is saying, this is the stuff that’s important to us today,” she said, “but Java EE does not give us what we need, so we have to build our own, because Oracle isn’t doing that. And the Guardians recognize that Oracle isn’t doing what is needed to maintain Java as a critical enterprise language and platform for the modern age.”