BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage Articles Java InfoQ Trends Report - December 2022

Java InfoQ Trends Report - December 2022

Bookmarks

Key Takeaways

  • Adoption of Java Virtual Threads will continue to grow as frameworks, such as Helidon and Vert.x, have introduced their own Virtual Threads platforms.
  • Adoption of Native Java will also continue to grow as Project Leyden, having been dormant for two years, was resurrected in May 2022, and there is support from frameworks such as Spring.
  • There has been a migration from MicroProfile Metrics to metrics and tracing offered by Micrometer.
  • There have been enormous efforts from both the commercial ecosystem and Java community to set the minimum Java version requirement on Java 11, but some frameworks, such as the Spring ecosystem, have raised the bar to Java 17.
  • With the release of Java 17, Java 11 has finally overtaken legacy Java 8 in the market.
  • As the speed of innovation increases, modernization continues to be a challenge for many Java developers.
  • Since the release of Java 17, the latest LTS, we're noticing faster adoption of Java 17 than we did when Java 11 was released.

This report provides a summary of how the InfoQ Java editorial team currently sees the adoption of technology and emerging trends within the Java space.

We focus on Java the language, as well as related languages like Kotlin and Scala, the Java Virtual Machine (JVM), and Java-based frameworks and utilities.

We discuss trends in core Java, such as the adoption of new versions of Java, and also the evolution of frameworks such as Spring Framework, Jakarta EE, Quarkus, Micronaut, Helidon, MicroProfile and MicroStream.

This report has two main goals:

  • To assist technical leaders in making mid- to long-term technology investment decisions.
  • To help individual developers in choosing where to invest their valuable time and resources for learning and skill development.

This is our fourth published Java trends report. However, this topic has received ample news coverage as we have been internally tracking Java and JVM trends since 2006.

To help navigate current and future trends at InfoQ and QCon, we make use of the "crossing the chasm" mental model for technology success pioneered by Geoffrey Moore in his book of the same name.

We try to identify ideas that fit what Moore referred to as the early market, where "the customer base is made up of technology enthusiasts and visionaries who are looking to get ahead of either an opportunity or a looming problem."

As we have done for the 2021, 2020 and 2019 Java trend reports, we present the internal topic graph for 2022:

For context, this was our internal topic graph for 2021:

Aside from some new technologies having been identified in the Innovators space, notable changes are described as follows.

We decided to place all of the downstream distributions of OpenJDK into one label, namely Java Community JDKs, and placed them in the Early Majority space. This list would include: Amazon Corretto; Azul Zulu; Microsoft Build of OpenJDK; BellSoft Liberica JDK; Eclipse Temurin; IBM Semeru; and Alibaba Dragonwell.

Java 17 has moved into the Early Adopters space as some frameworks, especially Spring, have committed to Java 17 as a baseline.

MicroStream joins Helidon and Micronaut in the Early Adopters space due to their continued development and integration with Helidon, Micronaut and Spring Boot.

Spring Native was removed from the model and replaced with the more generic Native Java. This was due to: the resurrection of Project Leyden in May 2022, initially introduced in 2020 and having been dormant for two years; and VMware deciding to supersede the Spring Native project in favor of GraalVM to support generating native images.

After more than a year in development, Spring Framework 6.0 and Spring Boot 3.0 were both released in November 2022 featuring a Java 17+ and Jakarta EE 9 baseline. Embedded observability through Micrometer with tracing and metrics has also been included with these releases.

What follows is a lightly-edited summary of the corresponding discussion on various topics among several InfoQ Java Queue editors and Java Champions:

  • Michael Redlich, Senior Research Technician at ExxonMobil Technology & Engineering Company and Java Queue Lead Editor at InfoQ
  • Ben Evans, Senior Principal Software Engineer at Red Hat and Java Queue Editor at InfoQ
  • Johan Janssen, Software Architect at ASML and Java Queue Editor at InfoQ
  • Dalia Abo Sheasha, Product Manager at Microsoft
  • Billy Korando, Developer Advocate at Oracle
  • Otávio Santana, Distinguished Software Engineer at Zup Innovation

We also acknowledge the Java Queue editors who provided input on updating our "crossing the chasm" model for 2022:

  • Erik Costlow, Senior Director of Product Management and Java Queue Editor at InfoQ
  • Karsten Silz, Full-Stack Java Developer and Java Queue Editor at InfoQ

We feel this provides more context for our recommended positioning of some of the technologies on the internal topic graph.

OpenJDK

Korando: The productivity features of Records, Pattern Matching, and improvements to Strings as part of Project Amber has me the most excited. I know there have been several times in my career where these features could have been very helpful with data transformation, working with formatted strings, and other frustrating areas. I'm excited for these features for my own uses, but also that future Java developers will benefit from these features as well and won't have to go through those frustrations like I did.

Santana: Java 8 has become outdated. In one of the most recent market surveys, such as the JRebel report, we can see that Java 8 is decreasing in popularity. This evolution is a good thing for the Java market and developer experience industry such as IDEs, frameworks, integrations tools, etc. We can also see enormous efforts of both the market and the Java community to set the minimum requirement on Java 11 as seen with the latest versions of Quarkus and Jakarta EE. I believe other application frameworks will follow suit to set Java 11 as a minimum requirement. When we talk about the Java platform, I believe these tools and frameworks are around 80% of enterprise code, so they will be updated so as not to fall out of favor with enterprise developers. The migration to Java 11 also points to a more fast-paced  culture, where  the Java and JDK version will be updated more often, at least every two years.

Evans: With the release of JDK 17, JDK 11 has finally overtaken legacy JDK 8 in the market.

The launch of the Adoptium Marketplace, and the arrival of reproducible builds, is far more significant than many people realize. This is especially true for enterprises and folks that have to care about supply chain security.

Redlich: The releases of Java 18 and Java 19 over this past year delivered new preview and incubating features such as Virtual Threads, Structured Concurrency, Pattern Matching for switch, Record Patterns, and the Foreign Function & Memory API. These features, in the form of JEPs, provide continued contribution towards fulfilling Project Amber, Project Loom and Project Panama. Java 20, scheduled for release in March 2023, will deliver upgraded previews and incubations of those features.

Java 17 and Beyond

Sheasha: Since the release of Java 17, the latest LTS, we're noticing faster adoption of Java 17 than we did when Java 11 was released. There are various factors including companies adopting more modern DevOps processes and pipelines that allow for faster and easier application updates. Another factor is frameworks and libraries adopting a more rapid release cadence which had previously been a big blocker for developers ready to upgrade their applications. The latest Spring Framework release, version 6, is based on Java 17 which signals to developers a commitment to adopting the latest Java versions. Another team embracing the faster Java release cadence is the Minecraft team who now ships with Java 17 to millions of their players.

Meanwhile, we're still seeing lots of developers running apps on Java 8 but since the jump from Java 8 to Java 11 is harder than Java 11 to 17, teams that have done the hard work of upgrading to Java 11 are a lot more likely to quickly adopt Java 17.

We're also seeing more developers using non-LTS Java versions (Java 18+) as they feel more confident adopting newer Java versions for their applications giving them access to new features of Java that they no longer have to wait years for. We’re seeing lots of developers pick the latest non-LTS Java version when prototyping or developing new applications. For production, however, an LTS version is still the choice for most teams.

Santana: The newest LTS in the Java version, version 17, brings several new features for the Java developer. We can enumerate, but to highlight, the Record construct brings a new perspective, primarily on enterprise business.

Janssen: There are many exciting developments such as Spring Boot requiring Java 17 which will hopefully boost the adoption of Java 17.

Project Loom and Virtual Threads

Sheasha: There is a ton of excitement around the performance of Java. Lots of developers are excited to see the updates coming out of Project Loom as developers get early access to some of the project's work, such as Virtual Threads.

Korando: The merging of key features of Project Loom into the main line Java release is probably the most significant change over the past year. The development of Project Loom has been eagerly watched over the past several years as its promise of much greater horizontal scalability will be applicable to many applications Java developers work. While features like Virtual Threads are ready to be used in production now, there is no doubt that many developers are eagerly awaiting for them to move out of preview status and be part of an LTS release, hopefully with Java 21 in September 2023.

Evans: I hear a lot of people talking about Project Loom, but I am somewhat more reserved about it - I would rather wait until we have more real-world experience with it. I think it's possible that it will be the huge game-changer that some people think, but I don't think it's a slam-dunk.

Redlich: The much anticipated release of Java 19 in September 2022 featured support for Virtual Threads. Development in this area has already produced incubation frameworks such as Helidon Níma, a microservices framework offered by Oracle, and the Virtual Threads Incubator project offered by Vert.x. I anticipate other vendors to follow suit.

Jakarta EE

After a delay of about three months, the much anticipated release of Jakarta EE 10 was made available to the Java community on September 22, 2022.

Redlich: The release of Jakarta EE 10 featured updates to over 20 of the specifications and a new Core Profile to complement the existing Platform and Web Profile. Plans for a point release of Jakarta 10 and Jakarta EE 11 are already being discussed within the Jakarta EE Working Group.

Native Java (GraalVM/Spring Native/Project Leyden)

Santana: GraalVM is becoming increasingly popular, giving a massive space to Project Leyden. It is a race to make Java startup faster!

Janssen: GraalVM is continuously improving and supporting more use cases such as Spring applications.

Open Telemetry

Evans: OpenTelemetry has made it to version 1.0 and is making extremely strong progress for such a young standard. I didn't expect to see OpenTelemetry easily exceeding what were already aggressive expectations. It is set to achieve Gartner's target of "the majority of telemetry traffic by end of 2023" which is well ahead of schedule.

Redlich: The upcoming release of MicroProfile 6.0 will feature the debut of the MicroProfile Telemetry specification to replace the MicroProfile OpenTracing specification that was first introduced in MicroProfile 1.3.

Containers

Sheasha: As more Java workloads are shifting to run in containers, we're seeing a shift from merely talking about how to containerize a Java app to how to best containerize a Java app. We are seeing more guidance around best practices when running an application in a container. For example, Microsoft has published an article with recommendations around memory allocation and garbage collection.

Evans: Containerisation of Java apps continues to gain ground.

Microsoft Support for Java

After introducing their own downstream distribution of OpenJDK in April 2021, Microsoft has continued its embrace of the Java programming language.

Sheasha: Microsoft joined the Jakarta EE and MicroProfile Working Groups as Microsoft continues to make large investments in the Java ecosystem for many reasons highlighted in this blog post from the GitHub ReadME project.

What is the Java Community Saying?

Sheasha: As the speed of innovation increases, modernization continues to be a challenge for many developers. The more Java versions are released, the bigger the gap for apps on old Java versions and frameworks which gets harder and harder to close. This is why we're seeing more companies invest in modernization tooling. Projects like OpenRewrite are important as we proceed with innovation without leaving apps behind. We're also seeing new projects such as the Eclipse Migration Toolkit for Java that help developers with their Java version migrations.

Developers are increasingly overwhelmed by the amount of knowledge required to build an application. There are a constant stream of new libraries, frameworks, and features to learn about. In addition, as we’re seeing more "Ops" in the "DevOps" sneaking into developer’s responsibilities. Developers are now expected to have a good understanding of Docker and Kubernetes.

Korando: I think a lot of the excitement with Project Loom being delivered into the mainline OpenJDK is now turning towards Project Valhalla. Project Valhalla is another long-running project in the OpenJDK and is promising significant improvements to memory management and throughput performance. Hopefully, we will start to set Project Valhalla to start delivering features into mainline OpenJDK in 2023!

Santana: There is a new trend towards reflectionless frameworks where reflection is eliminated to decrease application startup and decrease memory consumption. Frameworks such as Quarkus, Micronaut, Spring Native and Jakarta CDI Lite are examples of this.

The cloud is the new target of any solution. We can see the migration to all environments, not only Infrastructure as a Service (IaaS), but any solution that makes the Java developer's life easier and gives more abstraction to the operation layer.

Serverless brings scalability and simplicity to handle that from the software developer's perspective. We can see several solutions moving to the native way to take advantage of it.

Evans: It seems like this year Quarkus has started to properly break through into developers’ consciousness. I meet developers all the time now who have experimented with it, although the number of production apps is still growing. I think people have realized that it's not just a native-compiled Java, but is also a great developer experience as well as being a first-class Kubernetes Java.

What is New and Exciting That We Didn’t Expect?

Korando: The announcement of the Graal JIT compiler and native image being merged into OpenJDK at JavaOne 2022 was unexpected and exciting. A lot of the technology of GraalVM has been exciting, but has been difficult to use for many Java developers. The merging of these key features into OpenJDK will make them more accessible to all Java developers!

Santana: We know that the developer tools and architecture are a vast industry. Therefore, we can see many companies talk about "perfect solutions" and non-trade-off decisions. But in reality, Java has otherwise proven consistent and several success cases in several scenarios. Each architecture decision has trade-offs, and we need to understand the context to apply the best solution to the best scenario. The Java ecosystem shows us that it is a real-life and production-ready platform. It offers solutions for microservices, CQRS, cloud-native, serverless, even-driven-design, monolith, SQL, NoSQL, mapper, active records, etc.

Evans: I didn't expect Loom to get merged to mainline (in experimental form) in time for Java 19 and I really like Gunnar Morling's JFR Analytics project.

Janssen: I recently learned about the Coordinated Restore at Checkpoint (CRaC) in OpenJDK as it combines fast startup times with runtime optimizations.

The Java Community

Sheasha: Personally, I love how many doors Java has opened for me over my entire career. I've had a chance to be a developer, team lead, developer advocate and program manager, all within the Java ecosystem.

Java's continuous innovation and improvements to the language keeps the space interesting. It also keeps the language a great choice for solving various problems across a variety of industries. For me, one of the biggest reasons I’ve loved working in the Java space is the wonderful community that surrounds Java full of welcoming and supportive people from all over the world.

Evans: I am excited about sun-setting Java 8 and moving the community on to Java 17 and beyond. Also, the Observability community, especially OpenTelemetry, is going from strength to strength. And there is new work on profiling, including Java Flight Recorder, starting up.

Janssen: I'm really looking forward to working with project Loom and hope we can soon start to use it in projects.

Redlich: I am enjoying my time contributing to open source projects and have recently been elected as a committer to the Jakarta NoSQL and Jakarta Data specifications and the Eclipse JNoSQL project, the compatible implementation of Jakarta NoSQL. We have been working to have the two Jakarta specifications be included in the Jakarta EE Platform in time for Jakarta EE 11.

Conclusion

Please note that the viewpoints of our contributors only tell part of the story. Different parts of the Java ecosystem and locales may have different experiences. Our report for 2022 should be considered as a starting point for debate, rather than a definitive statement, and an invitation to an open discussion about the direction the industry is taking.

About the Authors

Rate this Article

Adoption
Style

BT