BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage Articles InfoQ Java Trends Report - November 2023

InfoQ Java Trends Report - November 2023

This item in japanese

Key Takeaways

  • Java Virtual Threads was finalized in the recently released JDK 21, and we believe that adoption of this feature will continue to grow as the latest edition of application frameworks, such as Helidon Níma and Vert.x, have already taken advantage of this.
  • Oracle has made a commitment to evolve the Java language so that students and beginners can more easily learn to write their first "Hello, world!" applications without the need to understand more complex features of the language.
  • Project Galahad, launched late last year, continues to aim to contribute Java-related GraalVM technologies to the OpenJDK Community and prepare them for possible incubation in a JDK mainline release.
  • There is increasing community interest in learning about modern microservice frameworks, such as Spring Boot, Quarkus, and Jakarta EE. The Spring Modulith project is now an official Spring project and allows the creation of better monoliths instead of microservices.
  • Since the release of Java 17, we've noticed faster adoption of newer Java versions than we did when Java 11 was released.
  • We see increasing development and application of Generative AI in the Java space, especially for code generation. We also see more development of SDKs or frameworks for AI and ML with Java, like Semantic Kernel, Deeplearning4J, djl, and Tribuo.

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.

You can also listen to the additional podcast discussion around Java Trends for 2023.

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 fifth 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 2022, 2021, 2020 and 2019 Java trend reports, we present the internal topic graph for 2023:

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

Aside from several new technologies having been identified in the Innovator category, notable changes are described as follows.

Java 17+ has been recategorized as simply Java 17 and remains in the Early Adopter phase as more frameworks have committed to Java 17 as a baseline. Java 21 has been introduced in the Innovator category.

We have created a new label, Fast JVM Startup, with further refinements, Fast JVM Startup (CRaC), placed in the Innovators category, and Fast JVM Startup (GraalVM), placed in the Early Adopters phase. The rationale was to acknowledge the relatively new technologies that have been recently introduced to the Java community.

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, Director at Garden State Java User Group and Java Queue Lead Editor at InfoQ. Retired Senior Research Technician at ExxonMobil Technology & Engineering Company
  • Johan Janssen, Software Architect at ASML and Java Queue Editor at InfoQ
  • Ixchel Ruiz, CDF Foundation Ambassador at The Linux Foundation
  • Alina Yurenko, Developer Advocate for GraalVM at Oracle Labs
  • Rustam Mehmandarov, Chief Engineer at Computas AS

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

  • Ben Evans, Senior Principal Software Engineer at Red Hat, Java Queue Editor at InfoQ and Java Champion
  • Erik Costlow, Senior Director of Product Management and Java Queue Editor at InfoQ
  • Karsten Silz, Senior Full-Stack Java Developer and Java Queue Editor at InfoQ
  • Olimpiu Pop, Chief Technology Officer at mindit.io
  • Bazlur Rahman, Software Engineer and Java Champion
  • Shaaf Syed, Senior Principal Technical Marketing Manager at Red Hat

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

GraalVM/Cooridanted Restore at Checkpoint (CRaC)

Janssen: All the improvements in GraalVM and CRaC (Coordinated Restore at Checkpoint) to reduce the startup time of Java applications are impressive. It's great to see the continuous improvements to GraalVM, and the integration with many frameworks makes it easy to use native images within your application. Apart from native image support, GraalVM also offers a Java runtime engine which may be used instead of the JVM from your vendor and may result in better performance for your application by just changing the runtime.

Redlich: Apart from the releases of JDK 20 and JDK 21, I believe the most significant change comes from Oracle Labs and GraalVM. Over the past year, we’ve seen: applicable parts of GraalVM technology being contributed to OpenJDK; the creation of Project Galahad, a project that will initially focus on the continued development and integration of the Graal just-in-time (JIT) compiler as an alternative to the existing HotSpot JIT compiler for possible inclusion in a future OpenJDK release; releases of GraalVM aligned with the releases of OpenJDK; and the elimination of GraalVM Enterprise in favor of a new license.

Java 17 and Beyond

Ruiz: The release cadence is not only bringing in new features in a more digestible way, but it is also allowing different users to pick them up and try them out. So overall, I have seen a good attitude towards early testing and richer feedback.

In a way, it has also simplified the roadmap for updating the Java version in production. The predictability allows for better synchronisation of development teams.

Yurenko: I see the speed of adoption of the latest Java versions increasing. This is something I often see being discussed at conferences, reflected in questions I receive, and also observed in the GraalVM Community Survey the GraalVM team ran last year -- 63% of our users were already on Java 17 or higher.

Mehmandarov: We have Java 20 and Java 21 this year. Some of the most noticeable features are Record Patterns and Pattern Matching for switch that are finally out of preview. Those can be exciting features working with large amounts of data and can simplify the code.

Native Java (GraalVM/Spring Native/Project Leyden)

Yurenko: I might be biased, but I see a lot of projects and libraries adopting GraalVM, particularly Native Image. Spring Boot now supports Native Image out of the box along with other popular Java frameworks, and I see many libraries that have added support as well.

Java for Beginners

JEP 445, Unnamed Classes and Instance Main Methods (Preview), delivered in JDK 21, was inspired by the September 2022 blog post, Paving the on-ramp, by Brian Goetz, the Java language architect at Oracle. This feature will "evolve the Java language so that students can write their first programs without needing to understand language features designed for large programs."

JEP 463, Implicitly Declared Classes and Instance Main Methods (Second Preview), was recently promoted from its JEP Draft 8315398 to Candidate status, and we anticipate that it will be targeted for JDK 22. Formerly known as Unnamed Classes and Instance Main Methods (Preview), Flexible Main Methods and Anonymous Main Classes (Preview) and Implicit Classes and Enhanced Main Methods (Preview), this JEP incorporates enhancements in response to feedback from JEP 445. Gavin Bierman, a consulting member of the technical staff at Oracle, has published the first draft of the specification document for review by the Java community.

Yurenko: Another great trend related to this one which I love, is how Java becomes more accessible for beginners. I think it’s very important for a community to stay open and welcoming for beginners, whether that’s students or newcomers to the industry, and features such as Records, Pattern Matching, Unnamed Classes, and Instance Main Methods allow beginners to learn faster, develop their first app more easily, and become increasingly productive.

What is the Java Community Saying?

Ruiz: A mixed bag, as many people were focused on the 21st release of Java. Project Loom has been tantalising many developers since the first previews. Virtual Threads and Structured Concurrency.

Others have noted the progress of JVM advances that are not strictly tied to syntax changes in the Java language.

Plans for migration from Java 8 to a newer version of Java. A "now or never" attitude!

Yurenko: I recently saw a new interesting way to analyze the trends in our community – Marcus Hellberg, VP of Developer Relations at Vaadin, analyzed talks presented at four major Java conferences in 2023. You can check out the article yourself, and here are a few of my conclusions:

  • Microservices and Kubernetes are still the hottest topics
  • AI and ML in the third spot confirm my observation about how hot this topic is now
  • I always see a lot of interest in framework talks, in this report, it’s Spring Boot and Quarkus
  • What’s rather surprising for me is that the security topic is in the fifth spot

Another trend that I see is conversations about reducing the startup time of JVM applications and the evergreen topic of performance; for me, that’s a sign that we are doing the right thing :)

Mehmandarov: Lately, there have been numerous talks and general excitement around Virtual Threads, which is finally out of preview with Java 21. We also see more development and application of Generative AI, especially for code generation. It still needs more maturity, but it is an exciting start. We also see more development of SDKs or frameworks for AI and ML with Java, like Semantic Kernel, Deeplearning4J, djl, and Tribuo.

Janssen: The Java ecosystem is still booming with many new developments and improvements. Apart from the things already mentioned, there are interesting developments, mainly around AI, which is evolving quickly, and it's great to see projects such as Spring AI instead of all the Python-based solutions. Next to the big hype topics, there are many other interesting projects like Spring Modulith, which is now an official Spring project and allows the creation of better monoliths instead of microservices.

Redlich: Most of the buzz that I have been hearing and seeing throughout 2023 is Project Loom. In particular, Virtual Threads was a final feature with the release of JDK 21. Leading up to this anticipated release in September 2023, there were numerous presentations and YouTube videos on virtual threads. At a special Java Community Process (JCP) 25th anniversary event held in New York City in September 2023, a panel of JCP Executive Committee members revealed their favorite feature of JDK 21, in which they unanimously said virtual threads.

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

Ruiz: Given all this attention to LLM, ML and AI, I would not be surprised to see new projects, libraries and APIs in Java to support use cases, workflows and products.

Mehmandarov: If I have to pick one thing, it is Generative AI, specifically focusing more on code generation. While it struggles with logical errors in the generated code, hallucinations, and other issues, it still fits nicely into the "unexpected, new, and exciting" category.

Janssen: It's awesome to see many new features in Java 21, such as virtual threads from Project Loom. I was a bit afraid that some of those features would be postponed to later Java releases. As Java 21 is the new Long Term Support (LTS) version, it's great that they are included, as many companies only use LTS versions. At first glance, it looks like nothing big has been removed, and hopefully this results in easy upgrades for our projects. Those upgrades are nowadays even easier with OpenRewrite, which allows automated upgrades not only for the Java language itself, but also for libraries such as JUnit.

Redlich: The new MicroProfile JWT Bridge specification, currently being developed, is a collaboration between Jakarta EE and MicroProfile Working Groups. This new specification will enable Jakarta Security applications to build on the MicroProfile JWT Authentication specification that will provide seamless integrations and eliminate duplication of effort and circular dependencies. The goal is to move the optional section of MicroProfile JWT Authentication to the new bridge specification together with TCKs and to have this specification ready for MicroProfile 7.0.

What's Getting You, Personally, Really Excited in the Java Space?

Ruiz: The resurgence of CLI tools in the JVM space. We have seen examples of mature projects that solve or reduce the friction for developers to try, test, release and publish tools, projects and products. JBang and JReleaser are part of this set of resurgent tools.

Yurenko: I like seeing many new projects occurring every day. For example, artificial intelligence and machine learning are probably the hottest trends now, and there are many opportunities in this field for Java developers. One of my favorites is Tribuo, an open source ML library developed by my colleagues at Oracle Labs. OpenJDK projects Valhalla and Panama will also greatly benefit Java developers working with AI.

Mehmandarov: There are quite a few things to get excited about. Some of them are new and upcoming, like String Templates (still in preview) and various libraries supporting Machine Learning and Java, and some of them are more mature but still see improvements and new development, like the developments in the Cloud-Native stack for Java (like Jakarta EE and MicroProfile).

When it comes to working with large datasets, I am also excited to see more concepts like Data-Oriented Programming in Java as well as the improvements to more memory usage efficiency, like projects Lilliput and value objects from project Valhalla.

Also, the importance and the excitement I get from interacting with the Java community worldwide. It is a genuinely vibrant and supporting group eager to learn and share their knowledge.

Redlich: I have been putting together a presentation entitled "Jakarta EE 11: Going Beyond the Era of Java EE" that I will present numerous times starting in November 2023. It’s amazing how Jakarta EE has evolved since 2018, and it’s been awesome studying the Jakarta EE specifications.

The Java Community

Janssen: Of course, every year, we get two new Java releases packed with features and lots of improvements in all the tools, libraries and frameworks. Next to that, it's good to see that the Java or JVM conferences are again happening and attracting more attendees, so make sure to visit them to learn more about Java and have some great discussions with fellow developers.

Conclusion

Please note that the viewpoints of our contributors only tell part of the story. Different groups, segments, and locales of the Java ecosystem may have different experiences. Our report for 2023 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