Recently, there was a report released by Gartner, titled “Market Guide for Application Platforms”. However, this report does not focus on application platforms in general. It’s main focus is Java EE. Only Java EE. The report comes with several daring statements about Java EE’s deprecation, with no signs of proof. For example:
- User organizations rarely start new projects on TP monitors
- Java developers eschew Java EE and use a wide variety of lightweight frameworks instead
- Most application platform vendors recognize that the traditional application server market is dying
- Java EE application servers can only host applications built with the Java language and the Java EE framework
And there is more. There are a few graphs thrown in, with no realiable source or background. Source is just “Gartner”. The level of such reports is very, very poor. Unproven claims are present in almost every sentence. And mostly, those claims are absolutely, horribly, totally wrong.
First, let’s see who the authors of the reports are.
- Bachelor of Arts, Economics, Wellesley College
- Patricia Seybold Group, Editor in Chief, 3 years
- Sun Microsystems, Director of Market Innovation, 2 years
- Systinet, Chief Technology Officer, 1 year
- B.Tech, Computer Science
- M.B.A., Finance
- Axis Risk Consulting, Consultant, 1 year
- Copal Amba, Associate, 2 years
The report is full of claims without any evidence, painting Java EE as deprecated, non-evolving technology. First fail comes in the very first paragraph, where Java EE is tagged as three-tier framework.
I quickly picked a few.
Digital business initiatives require new features and capabilities in application platforms, and Java EE has failed to keep pace.
No specific “new features” are mentioned in the report. Therefore, validity of this statement can not even be evaluated. The report mentions “cloud-native” features. Anyhow, cloud-native is not a term with exact definition. It is in fact a marketing buzzword widely used by Pivotal. However, Mr. Matt Stine in his book Migrating to Cloud Native Application Architectures, presented (by complete coincidence) at Pivotal websites provides us some information. This book states that native-cloud application architecture is a set of traits, including:
- Independently deployable services that do one thing well
- Platforms for rapid, repeatable, and consistent provisioning of app environments and backing services
- Published and versioned APIs that allow interaction between services in a cloud native app architecture
- Systems that get stronger when subjected to stress
Java EE can do every single of these points with ease. When it comes to microservices, there are plenty of options Java EE has to offer:
To sum up, the only special features mentioned in the report are “cloud-native” features. Authors point out that Pivotal’s solutions provide “cloud-native” features, while Java EE does not. By taking a look at Pivotal’s idea of cloud-native, one can easily find out that Java EE can do it all for a long time. Support for microservices/SOA is also present for a long time. Diversity, lack of vendor lock-in, open standard and sustainable growth are what Java EE brings on top of that. What is instead suggested is to buy the same from a vendor offering no possibility migration to another vendor, if required. Who is the suggested vendor ? Pivotal again.
Java EE is not an appropriate framework for building cloud-native applications
First, the report does not mention which framework is appropriate for building cloud-native applications. As in previous statement, one can only guess which traits make framwork appropriate for cloud-nativeness. Anyhow, Pivotal’s solution is recommended. Given the description of a cloud-native solution provided by Pivotal itself, Java EE is completely capable of being cloud-native, whatever this means to marketing department.
Popular Java frameworks and platforms for building cloud-native applications include Apache Tomcat, Dropwizard, Spring Cloud and Play Framework
Besides that Apache Tomcat there, which makes me want to jump right out of the window, how is Dropwizard comparable with Java EE ? How is it cloud-native ? Because you can write software with a REST interface ? Seriously ? JAX-RS is still the most sophisticated thing in Java World for building REST APIs in enterprise environment. Together with CDI events, interceptors, plugins, scopes,pooling capabilities, JAX-RS goes far further than Spring can even imagine. Comparing a microframework like Dropwizard that aims to be simple and open-minded with full-blown Java EE or even Spring shows total misunderstanding of the problematics.
Java EE has gained a reputation for heavyweight bloat that is slow to add support for emerging application architectures
Pivotal’s solution is presented as lightweight enough. How Java EE is lighter, faster, easier and less complicated is demonstrated by Arun Gupta. Java EE applications in his comparison are clearly better in just everything. And that was few years ago. Now, Java EE is even further. Sebastian Daschner addressed this issue more recently in Java EE—the Most Lightweight Enterprise Framework. It is worth taking a look, as it proves (by providing examples) that Gartner’s report is mostly wrong.
Java EE has not kept pace with modern architectural trends.
Which trends are they even talking about ? Interconnecting pieces of sofware with REST API ? JEE can do that with JAX-RS seamlessly. Websockets ? No problem, better and cleaner solution than Pivotal offers. Shipping applications in containers ? That is not a domain of application-level frameworks. We all use Docker for this.
What about GraphQL ? Nobody supports that on framework level. This is a possible modern architectural trend nobody in this report talks about. Maybe because Pivotal does not sell it yet.
Treat your Java EE applications as you would any other legacy application, and evaluate them using a fitness and value review process to determine your best course of action. Resist the temptation to simply lift and shift Java EE applications from closed-source to open-source application servers for modest license savings.
The report gives a nice little advice to treat Java EE applications as if those were legacy applications. Author’s advice is not to migrate to open-source application servers and drop Java EE right now instead. No way. Projects like WildFly/JBoss, GlassFish/Payara or even TomEE are among the best choices. There is no reason to drop those application servers in real-world environments. Connection pooling, secured administration, tested and commercially supported environments can not be dropped. The functionality is required in real world and has to be provided by someone, somewhere.
After dropping Java EE, authors recommend: “Give preference to vendors that articulate a platform strategy that supports modern application requirements, such as public, private and hybrid cloud deployment, in-memory computing, multichannel clients, microservices, event processing, continuous delivery, Internet of Things (IoT) support and API management”
How does Java EE not support continuous delivery ? How is continuous delivery even related to frameworks ? How does Java EE not support in-memory computing ? Since when can’t Java EE be deployed to the cloud ? If those are modern platform requirements, Java EE meets them. For a long time.
Internet of Things is a relatively new buzzword, very few people know what this means. We’re heading towards a network of autonomous interconnected devices. We are not yet there ! There is plenty of research to be done. People directly connecting their Raspberries are not doing IoT. Such devices can be programmed using Java, but the very presence of big JVM is the problem. This problem is actually solved by Jigsaw and JDK9, it’s not a problem of any particular framework. And definitely, Pivotal does not provide any solution to this.
Is AS size the problem ? Rightsizing Java EE applications is not a big problem. Again, Payara Micro, Wildfly Swarm, TomEE, Microprofile…There is more than enough activity. Using Vert.X or Dropwizard as a minimalistic framework providing boundaries for new projects is also possible. But even when microframeworks are used, they do not offer all the functionality commonly needed. Want Dependency Injection ? The best one came up as a part of JCP process. It is called CDI and guess what, it is a part of Java EE. And it can be integrated into your Microframework too, be it Dropwizard integration or Vert.X integration.
The report aims at buzzwords currently being sold by Pivotal. A common pattern can be found in the article:
- Java EE is blamed for something
- Pivotal/Spring Framework alternative is offered
There are too many statements that are either false, are not valid in the first place or can not be proven, because those statements do not make any sense. The report is very general, nothing specific is mentioned. There is no specific comparison of framework capabilities involved.
The report also mentions microservices. When Micro means the size of deployment unit, Java EE is good at that (I alreadymentioned Microprofile movement and micro-editions of AS many times). Of course, Java EE applications are deployable to the cloud. Java EE applications can be dockerized. If you have doubts about that, ask Adam Bien for example, who released many videos and tutorials about how Java EE can be deployed in cloud environment quickly. This video provides a great example with code samples and everything needed. A much better proof of Java EE’s capabilities than some general statements posted by an undergraduate Bachelor of Arts with no development experience.
If rumors are correct and Gartner accepts payments in exchange for this little “commercial break”, it is horrible. I don’t like such aggressive marketing. But what if the conspiration theory of Pivotal paying Gartner to is wrong ? What if authors of the report are absolutely sure about what they wrote ? It is probably even worse scenario. The principles presented in the report are perfectly described in hype driven development article.
I don’t know what to think about this report. My only advice is: Do not take advice about which technology you should use from two undergraduate MBAs. Java EE is a good technology. If you have any specific questions, please ask them. If you think I am wrong, please tell me.
A message to the report authors
Dear Anne Thomas and Aashish Gupta, if you are reading this, please accept my invitation for a quick online talk. Even online, before your own eyes, I can show you what Java EE is capable of. In a matter of minutes, I can create a microservice-architecture-driven application deployable and easily scalable in the cloud. The very thing you claim Java EE is not capable of. And if you give me few more extra minutes, I can dockerize it for you. Then, we can talk about the article deeply and evaluate your statements. We can also have a look at Pivotal’s solution and compare how it is different on technical level.
If you prefer learning on your own, try Java Development in the Cloud, then Java EE Applications to Microservices and Oracle Java Cloud. There is also Java EE application using Microservices and Containers by Arun Gupta. You can even try reading a book called Java EE Applications on Oracle Java Cloud to get a basic idea about JEE development. Maybe Adam Bien’s video on Payara Micro And Docker.