|Dissecting the 2021 Jakarta EE Developer Survey|
|Wednesday, 22 September 2021|
This survey comes from the Eclipse Foundation and provides technical insights into enterprise Java that give answers to questions like which Java based framework is on the rise, whether Java is used for Cloud native development and much more.
Just like Vaadin, Jakarta EE finds itself mostly used in an Enterprise setting. That property is embossed in its name after all; EE for Enterprise Edition.
Born in 2017 out of Java EE when Oracle contributed it to the Eclipse Foundation, it was subsequently relaunched as Jakarta EE as well as open-sourced. What it essentially represents, is Java's ability of modernizing, but at the same time keeping ties with the past - a quality highly sought after by those enterprise environments.
At its core Jakarta EE is a both a framework and a collection of APIs for mainly developing Web services as well as enabling interoperability between distributed systems. Its versatility lies in that while you can use it in building microservices, you can also use it in developing monoliths.
As the Eclipse Foundation 2021 Jakarta EE Survey reveals, the trends want Jakarta departing from the old model of monolithic applications and transitioning exclusively to the Cloud, meaning that it facilitates enterprises taking that step forward without having to dump their existing infrastructure.
In fact, Jakarta EE underpins many such infrastructure technologies:
Apache Tomcat implements four Jakarta EE specifications — Jakarta Servlet, Jakarta Standard Tag Library, Jakarta WebSocket, and Jakarta Authentication.
Spring Boot embeds Apache Tomcat, Eclipse Jetty, or Undertow as a runtime.
Eclipse Jetty implements the Jakarta Servlet, Jakarta Server Pages, and Jakarta WebSocket specifications. .
MicroProfile implements four Jakarta EE specifications – Jakarta RESTful Web Services, Jakarta Contexts and Dependency Injection, Jakarta JSON Binding, and Jakarta JSON Processing.
The Key Findings
Unsurprisingly, Spring/Spring Boot continued to dominate this space too with a coverage of 60%, up 16% since last year, but Jakarta EE followed closely at second place with a 47% adoption, up 12%. The rest of the share goes to Microprofile with a hefty 34%, up 5%, followed by Micronaut and Dropwizard in that order.
On the other end I was surprised that Microprofile has gained just a 5% raise since last year, considering that it is feature complete; Config, Health, Metrics, Opentracing and OpenAPI, it's all there.
The second finding is that the adoption of microservices using Java as its tooling is on the rise with an increase of 4% since 2020 (39%) and that the three most popular cloud native technologies were Docker, Kubernetes, and Jakarta EE.
On another note, it seems that developers are at last moving away from Java version 8 and are embracing Java 11, with an increase of 28% since last year. This is not surprising as Java 11 plays an important role in cloud environments because it is tuned to make Java workloads more efficient under containers.
The surprising fact was that, despite the strict licensing scheme, most people in this survey preferred using Oracle's JDK (at first place with 40%), rather than going all out with OpenJDK which has much more lax licensing. That said, AdoptOpenJDK followed breathing down Oracle JDK's neck just one percent lower, 39%.
Given the findings of Snyk's JVM Ecosystem Report 2021, which had AdoptOpenJDK ranked at first place with 44% and Oracle's JDK at 3rd with 23%, I would not have expected Oracle JDK to come top. However, it seems that especially on cloud native production environments, Oracle's propriety JDK is preferred, probably due to enterprises valuing Oracle support.
The top 5 runtimes/application servers in a cloud native environment were Apache TomCat as usual, WildFly, Quarkus, Jetty 4 and JBoss Enterprise Application Platform, in that order. I can understand Wildfly in second place due to its easy configuration, support for JAX-RS2 and it being lightweight on resources. But can anyone tell me where Weblogic lies? Is it almost non-existent because it is the opposite of Wildfly? Looking at the Jakarta EE compatibility charts, Weblogic support stopped with Jakarta's version 8. Does that constitute breaking ties with the past in order to modernize?
Next were the top three architectural approaches for implementing Java systems on the cloud. Again Microservices is in 1st place with 43%, Hybrid 2nd with 29% and Monoliths 3rd with 18%. The share of Monoliths still sounds high, but looking behind the numbers consider that:
Use of the hybrid architecture approach for implementing Java systems in the cloud has increased since last year with 29% adoption reported in 2021 (up from 23% in 2020) and has outpaced monolith, which was ahead of hybrid last year.
Finally, over 48% of respondents have either already migrated to Jakarta EE or plan to within the next 6-24 months while the top three priorities that the Jakarta EE community should be focusing on were:
Wrapping up, I think that the summary goes beyond Jakarta and Cloud Native. It is a testament to Java's timelessness, being out of fashion but never out of work. But even that retro aspect is currently under siege too, due to the release of the long-awaited version 17 which is a game changer. So if you are a Java developer, you will just continue doing it for years to come - under any environment, Cloud or not.
|Last Updated ( Wednesday, 22 September 2021 )|