Java Digest # 11: State of Java Ecosystem ‘24 & Spring, Spring, Spring

Java Digest # 11: State of Java Ecosystem ‘24 & Spring, Spring, Spring

?? Aloha, friends!?

Time flies… uh, where was I…?

When else but in the first month of summer to talk about Spring (sorry for the pun)??

Because May has brought us the most news about it, let's dive into the updates.

You can check out the previous digest here.


This edition’s undisputed hero is Spring, but we’ll chat a bit about Java too.

?? According to the State of the Java Ecosystem 2024 report by New Relic, newer versions of Java are being used more frequently, which pleases our digest team.

Folks, let's aim to make sure there's not even a whiff of Java 8 by 2025!

?? Nicolai Parlog has dropped a new video on his favorite topic – Java Modules.

Module Imports in Java 23 - Inside Java Newscast #69

Besides that, Nicolai teased a series of posts about Data-Oriented Programming on Java 1.1 – click here for the details (as of writing this digest, 4 out of 5 planned posts are already available).

?? Billy Korando recorded a 10-minute intro to JDK Mission Control.

Introduction to JDK Mission Control

?? Microsoft's blog featured an interesting article (apparently the first in a series of three) by Cesar Soares about one of the powerful optimization techniques in JDK - Scalar Replacement, and ways to improve it.

?? We couldn't overlook the talk by Roy Van Rijn at DevoxxUK 2024, either.

Pushing Java to the Limits: Processing a Billion Rows in under 2 Seconds by ROY VAN RIJN?

?? If you're itching to try out JDK 23, Nicolai Parlog has a new Inside Java Newscast just for you!

All Java 23 Features - Inside Java Newscast #70


Since the last edition, a lot has happened in the Spring world, but the biggest news is that Spring Boot 3.3.0 is now available! We've written a lot about the new features added in this version, but let's highlight the main updates once again. You can check out the detailed changes here, but here are the key points:

  • Support for CDS was added to reduce startup time and memory consumption.
  • Extended support for Micrometer and added support for Prometheus 1.x.
  • Introduced support for virtual threads for WebSockets.
  • SSL SNI support was added for embedded web servers.
  • Docker Compose support for Bitnami containers.
  • Added Base64 resource support in configuration files.
  • Enhanced Spring Security and much more.

Moritz Halbritter wrote a fantastic article about SBOM (Software Bill of Materials) support in Spring Boot 3.3.0. SBOM has become a key element in ensuring software security and managing risks in the software supply chain. If you're interested in security, we highly recommend giving it a read.

Spring Framework 6.2.0-M2 and Spring Framework 6.2.0-M3 were also released. While M3 mainly contains dependency updates, M2 includes over 30 improvements. You can find the full list of changes here, but here are the most important new features:

  • You can now test WebMvc.fn endpoints using MockMvcWebTestClient, just like your annotated controllers.
  • A new implementation of UrlParser has been added, which follows the Living URL standard. Its introduction was expedited by vulnerabilities we've mentioned in previous editions.
  • A new UrlHandlerFilter has been introduced for handling URLs with a trailing slash.

The main highlights of Spring Data 2024.0.0 include the following changes:

  • Added support for value expressions in mapping annotations and @Value annotations. Now you can retrieve values from configuration properties and SpEL expressions.
  • Introduced support for MongoDB 7.0 and the MongoDB Java driver 5.0.
  • Declarative support for MongoDB transaction options using transaction annotations.

Spring Session 3.3 has introduced the following changes:

  • Added reactive implementation of ReactiveSessionRegistry.
  • Introduced ReactiveRedisIndexedSessionRepository.
  • Ability to specify PlatformTransactionManager using @SpringSessionTransactionManager.
  • Improved documentation related to JDBC.

Spring Security 6.3.0 also includes some new improvements. Some of the most interesting ones are:

  • Added the ability to check for compromised passwords.
  • Introduced support for OAuth 2.0 Token Exchange Grant.
  • Added a new @HandleAuthorizationDenied annotation, allowing method-level error catching and handling.

Three versions of Spring for Apache Kafka just dropped: 3.2.0, 3.1.5, and 3.0.17. All of them now include the handleOne() method implementation, declared in the CommonErrorHandler interface, within the CommonDelegatingErrorHandler class. You can find more details about these releases in the notes for versions 3.2.0, 3.1.5, and 3.0.17.

Spring for Apache Pulsar 1.1.0 now supports transactions for PulsarTemplate, @PulsarListener, and DefaultPulsarMessageListenerContainer. Check out the other changes here.

Spring for GraphQL 1.3.0 is now available. The final version includes support for virtual threads, GraphQL authentication over WebSocket, and interceptors for WebSocketGraphQlTester. More details can be found here.

Spring Authorization Server 1.3 is now available. In our previous digest, we covered the new features introduced in this version. For more details, you can check out the release notes.

Spring Cloud 2023.0.2 (OSS) and 2022.0.7 (Enterprise) have been released. The updates affect the following modules: Spring Cloud Kubernetes, Spring Cloud Function, Spring Cloud Gateway, Spring Cloud Config, Spring Cloud Netflix, and Spring Cloud Stream. You can find more information here.

Spring AI 1.0.0 M1 brings a lot of changes, which are detailed in this article. Here are some highlights:

  • Introducing the ChatClient Fluent API, similar to WebClient, RestClient, and JdbcClient. This new client offers methods to build requests, which are then used as input for the AI model.
  • Added evaluators to address the issue of inaccurate AI responses by using other AI models to verify the accuracy of answers.
  • Support for new models has been added.
  • New vector databases are now supported.

Spring Modulith versions 1.2, 1.1.5, and 1.0.8 are now available. In version 1.2, new features include the ability to make module access public, an alternative to package-info.java for Kotlin, and the exclusion of classes generated by Spring AOT from verification. For more details on the changes, you can check the links for versions 1.2, 1.1.5, and 1.0.8.

Here’s some information about other releases, which mainly include bug fixes, dependency updates, and documentation improvements:


As always, our release wouldn't be complete without highlighting the latest videos from the Spring Tips series. Here are the most recent videos since our last update:

?? In the first video, Josh Long talks about HashiCorp Vault and Spring Cloud Vault, specifically focusing on how they can be used for automatic database password rotation.

Spring Tips: Easy Password Rotation with Hashicorp Vault

?? In the next video, Josh Long discusses virtual threads and demonstrates, with two examples, how they can impact application performance.

Spring Tips: Virtual Threads

?? In the third video, Josh Long covers Webauthn (Web Authentication), a web standard that is a key component of the FIDO2 project. This project aims to standardize the interface for authenticating users to web applications using public key cryptography. He also focuses on developments in this area within the Spring Security project.

Spring Tips: Spring Security, Webauthn, and Passkeys

?? The latest video in the Spring Tips series is a bit different from the usual. This time, Josh Long shared his talk on Spring AI from the recent Spring I/O conference. In this presentation, Josh Long and Christian Tzolov discuss the growing popularity of Java for AI applications. They also demonstrate how easy it is to get started with Spring AI by showcasing an example of creating a pet adoption platform.

Spring Tips: Spring AI Redux


As mentioned earlier, the Spring I/O conference recently took place in Barcelona. Recordings of the talks are now being uploaded to their YouTube channel. While we can't list all the talks in our digest, there are a few we'd like to highlight.

?? Josh Long's talk provides a concise overview of topics he has covered in the Spring Tips series, such as Spring AI, Virtual Threads, and more. If you haven't been following the series but want to learn about these innovations, we recommend checking out his talk.

Bootiful Spring Boot 3.x by Josh Long @ Spring I/O 2024

?? In his session, Juergen Hoeller explored some of the strategic fine-tuning of the core container in Spring Framework 6.2, covering component model variations, autowiring performance, locking behavior, and lifecycle management revisions.

Spring Framework 6.2: Core Container Revisited by Juergen Hoeller @ Spring I/O 2024

?? Thorben Janssen, in his talk, discusses issues that can affect the performance of your queries when using Spring Data JPA and offers strategies to work around them.

Build faster persistence layers with Spring Data JPA 3 by Thorben Janssen @ Spring I/O 2024

?? The main focus of Daniel Garnier-Moiroux's talk is the architecture of Spring Security, its key components, and ways to customize them. We recommend this talk to anyone looking to deepen their understanding of Spring Security.

Spring Security Architecture Principles by Daniel Garnier-Moiroux @ Spring I/O 2024

?? If you're interested in GraalVM and its future developments, like we are, then Alina Yurenko's talk is perfect for you.

Going AOT: Everything you need to know about GraalVM for Java applications by Alina Yurenko SpringIO


The "State of Spring 2024" report has been released, showcasing the rapid evolution of the software development world. Key trends include the integration of artificial intelligence, the growth of Kubernetes, and the advancement of modern architectural styles like serverless.

Key highlights include the following:

  • Integration of Generative AI:

  • Usage of Kubernetes:

  • Modern Architectural Styles:

  • Popularity of Testcontainers:

  • Challenges with Updating Legacy Versions:

  • Spring AI and Other Projects:

For more detailed information, you can check out the full report here.


We recommend checking out Maciej Walkowiak's experience upgrading to Spring Boot 3.3.0. In brief, Spring updated to Hibernate 6.5, which included a minor change to JPQL generation when an empty parameter list is passed. This caused 100% CPU usage in production. The moral of the story: always thoroughly test even the smallest version changes in dependencies.

Kudos to the Hibernate team—they have already fixed this issue.


The Spring team has announced that their SpringOne conference is moving to an online format and is now completely free. Register for the next conference, which will take place on August 26-28.


??? OCI

  • Oracle is developing its own AI assistant, Oracle Code Assist, which will be optimized primarily for Java, SQL, and OCI. While it's not yet publicly available, there is a short demo video showing Oracle Code Assist in IntelliJ IDEA generating code for a POJO class, implementing methods based on their names, and creating documentation and unit tests. Oracle also promises that Oracle Code Assist will help with updating Java versions across entire projects.
  • On Oracle's blogs, there's a series of three articles (1, 2, and 3) comparing the Saga pattern with XA transactions. The author aims to dispel the negative perception of XA transactions as too complex by comparing a Java implementation of the Saga pattern with a centralized coordinator and XA transactions using a three-service operation as an example.
  • Additionally, Oracle presented a webinar introducing the Jakarta NoSQL specification, JNoSQL, using a project with the Helidon framework and the Oracle NoSQL database.

??? AWS

  • AWS CloudWatch Application Signals (Preview) is a comprehensive runtime monitoring solution that enables the collection of metrics such as latency (p99, p90, etc.), request/error counts, execution traces, and more. Similar to competitors like Datadog, this service uses an instrumentation agent and does not require visible code changes. A recent article on AWS Blogs discusses using this service with Java and Tomcat, using the well-known PetClinic application as an example.
  • Additionally, another AWS Blogs article highlights the non-trivial aspect of AWS Lambda - executing code after returning a response from the function. It explores three approaches: Asynchronous invocation of another function, response streaming, which allows sending the response body before it is fully ready & Lambda extensions run as separate threads/processes from the main function.
  • AWS DynamoDB now offers the ability to limit on-demand tables in their maximum allowable auto-scaling. This helps avoid scenarios where, due to an error, the DynamoDB cluster scales excessively.

??? Azure

  • A recent article on Azure Blogs addresses the issue of JVM memory allocation in containers. The problem discussed is that the JVM, by default, assumes other applications are running on the operating system and tries to allocate memory conservatively. This approach is not ideal when a separate container is allocated for the JVM. To resolve this, Azure Container Apps use an automatic memory fitting approach that calculates memory allocation for Metaspace, CodeCache, and other JVM memory regions based on metrics such as JVM class count.
  • Azure has released a new revision of The Reliable Web App Pattern for Java. This updated version boasts improvements in security, scalability, and Infrastructure as Code (IaC). These enhancements can be reviewed either in the article on Microsoft Devblogs or directly in the git repository, which contains deployment instructions for the reference implementation on the Azure portal. This implementation can serve as a good starting point for those new to Azure.
  • Microsoft has released the first GA version of Semantic Kernel for Java v1. One of the key features is the use of annotations @DefineKernelFunction and @KernelFunctionParameter on methods and parameters for integration with AI agents. Accompanying this news are several Hello World examples, such as creating a Restaurant Bookings Sample or a Time Plugin using Java and Azure services.
  • A new article on Microsoft Devblogs explains how to create a dev container for local Java development with Visual Studio Code. IntelliJ also supports dev containers through a plugin, which has received significant updates this month despite not having many positive reviews from users yet.



Not a month without a drama OpenAI . This time it's Scarlett Johansson. The voice of the new OpenAI assistant, "Sky," sounds suspiciously similar to the actress's voice. And apparently, it's without her consent. =)

You can check out the full Xwitter thread here.

Apparently, Sam Altman doesn't see any issues with this.


Thanks for reading the digest! Don't forget to like and subscribe to our monthly newsletter on LinkedIn. We also appreciate your ideas on how we can improve our future articles.

As usual, the Avenga team worked on the digest:


要查看或添加评论,请登录

Andrew Petryk的更多文章

社区洞察

其他会员也浏览了