Java Digest # 7: awaiting Java 22, #1BRC, Spring has no chill

Java Digest # 7: awaiting Java 22, #1BRC, Spring has no chill

?? Aloha, friends!?

We're back in action after those chill winter holidays! While we were kickin' it, the world of Java and its surroundings saw a bunch of cool stuff goin' down. So, let's dive into the news, peeps

You can read the previous digest here.


JEP 455, Primitive Types in Patterns, instanceof, and switch (Preview), has been promoted from Candidate to Proposed to Target for JDK 23. Under Project Amber's auspices, this JEP proposes to enhance pattern matching by allowing primitive type patterns in all pattern contexts, and also extends instanceof and switch to work with all primitive types. Aggelos Biboudis, a principal member of the technical staff at Oracle, has recently published an updated draft specification for this feature.

Ron Pressler and Alex Buckley have submitted JEP Draft 8323072, Deprecate Memory-Access Methods in sun.misc.Unsafe for Removal. This JEP proposes to deprecate the memory-access methods defined in the sun.misc.Unsafe class for removal in a future release. These now unsupported methods have had supported replacements since JDK 9 for accessing on-heap memory and JDK 22 for accessing off-heap memory.

JDK 22 is peekin' over the horizon, folks! Early access builds? Grab them from the link right here. Mark your calendars – this JDK version is set to hit the streets on March 19, 2024. And hey, since JDK 22 is already strutting in its 2nd Rampdown phase, no new JEPs are jumping aboard – that train's left the station (unless you're talking Late-Enhancement Request Process, but that's a long shot). So, come March, and we're lookin' at these 12 cool features rolling out:

If JDK 22 is too mainstream for ya, check this out – Early Access build no. 6 of JDK23, fresh off the press!

Oracle Labs just dropped another release of GraalVM for JDK 21 Community 21.0.2. This baby packs some fixes as part of the Critical Patch Update for January 2024. For the nitty-gritty, hit up those release notes!


Spring Boot 3.3.0-M1 is here for the taking, packed with 105 updates. Most of these changes involve sprucing up the docs, bumping up dependency versions, and squashing bugs. But hold up, there are some nifty new features worth shouting about:

  • Starting with this release, the Undertow web server is gonna ride the wave of virtual threads if you flip the switch. Turn 'em on with the setting spring.threads.virtual.enabled.
  • Added a bunch of knobs and dials for setting up a backup cluster for Apache Pulsar. With these settings, you can gear up the Pulsar client to switch to another cluster if your connection goes haywire. Check out all the options with the prefix spring.pulsar.client.failover.
  • New auto-configurations for JwtAuthenticationConverter and ReactiveJwtAuthenticationConverter are in town. They'll set themselves up if you have at least one of these parameters:

spring.security.oauth2.resourceserver.jwt.authority-prefix        
 spring.security.oauth2.resourceserver.jwt.principal-claim-name        
 spring.security.oauth2.resourceserver.jwt.authorities-claim-name.        

  • Version 3.3 keeps beefing up support for Micrometer and OpenTelemetry. They've supported the @SpanTag annotation and a bunch of other tweaks you can read about right here.

January also saw the roll-out of two support versions for Spring Boot, namely Spring Boot 3.2.2 and Spring Boot 3.1.8. The focus was majorly on fixing bugs and updating dependency versions. Scoop up more deets right here and there.

Heads up, folks! Attention! Pozor!?

Our editorial team is pushin' all our readers to update their web projects to the latest Spring Boot versions ASAP. Why? 'Cause some nasty vulnerability in the older versions could lead to your site being MIA. Get the lowdown on this vulnerability right here.

As expected, fresh versions of Spring Framework hit the scene – 6.1.3 and 6.0.16. Both versions were the base for the Spring Boot versions 3.2.2 and 3.1.8 mentioned above. Dive into the detailed change log with this link.

Under the radar, without a peep on their blog, the Spring Security team dropped Spring Security 6.3.0-M1. Along with the usual bug fixes and dependency updates, this version packs some cool new features. The highlights? In RoleHierarchyImpl, there's a shiny new factory method that lets you set up hierarchies without fiddling with setters; a fresh attribute offset added to the @EnableMethodSecurity annotation; and HandlerMappingIntrospector now has caching for a performance boost. Dive into the full change log right here.

Also, Spring Security 6.3 is bringing in some sneaky JDK serialization/deserialization for smoother updates. Check out this article to get the scoop on the issues that sparked these changes.

Spring Authorization Server 1.3.0-M1 has beefed up error logging for invalid or expired authorization codes, added support for multi-tenancy using the issuer path component, and expanded scope validation capabilities. Get the full lowdown right here.

Spring Data 2023.1.2 and 2023.0.8 are up for grabs! These releases come loaded with dependency updates, regression fixes, and some slick improvements. Both versions are already rockin' on the latest Spring Boot releases.

For Spring Modulith, not one, not two, but three versions have dropped: 1.0.5, 1.1.2, and 1.2 M1. The main dish in these releases? Bug fixes and nifty tweaks in the event publication registry, event externalization, and overall configuration. Get the full deets in the change logs for each version.

The latest Spring Cloud Commons 4.1.1 update tackles a tricky issue with BeanPostProcessors registration when components tagged with @LoadBalanced are whipped up through autoconfiguration.

Spring Cloud Dataflow 2.11.2 just leveled up to Spring Boot 2.7.18 and includes a fix for CVE-2023-6378.

Spring for Apache Kafka 3.1.1 is out and about for use. This is the first release since the project's founder, Gary Russell, decided to hang up his coding boots and retire. The focus? Polishing existing features and fixing bugs. This version is in action from Spring Boot 3.2.1 onwards.

Another one of Gary Russell's babies, Spring AMQP, snagged its first release after his departure, hitting version 3.1.1. All the docs have been moved to Spring Antora, synchronized code blocks got swapped with Lock (and Conditional) instances to fit in with virtual threads, plus there's a nifty mechanism for activating more commonly used modules in ObjectMapper right out of the box. Like before, this version kicks in with Spring Boot from 3.2.1 onwards.

Spring for Apache Pulsar also bagged a new version, 1.0.2. The big news? The addition of a BOM module (spring-pulsar-bom) to simplify using Spring for Apache Pulsar in scenarios where Spring Boot isn't in the mix. Some dependencies also got a refresh. This version is included in Spring Boot from 3.2.2 onwards.

Spring Session 3.3.0-M1 offers a Reactive Redis Indexed implementation of ReactiveSessionRepository with support for session events and session searching by principal name. This new implementation adopts a different approach to storing and retrieving secondary index info and session expiration strategies.

Spring Web Services has hit version 4.0.10. Added support for jar:nested in SchemaFactoryUtils, axed duplicate dependency declarations for HTTPClient, and updated Spring Framework to 6.0.16.

There's also a new release of Spring Tools 4.21.0 for Eclipse, Visual Studio Code, and Theia. Check out the detailed change log right here.

Spring Shell dropped not one but two versions – 3.1.8 and 3.2.1. Both versions are packed with bug fixes and updates to the latest Spring Boot versions.

Let's shift gears to news not directly tied to updates in the Spring ecosystem.

Joris Kuipers has shared a tale of migrating a project from Spring Cloud 2.4 to Spring Cloud 3.x. His article deep dives into the key differences noticed during the project's shift to Spring Cloud 3.x.

Maciej Walkowiak rolled out a new version of his project, WireMock Spring Boot. This library makes working with Wiremock a breeze, so our editorial team suggests checking it out if you haven't yet.

Since our last update, Josh Long has dropped four videos in the Spring Tips series. You can catch them below:

Spring Tips: Spring's Application Event Subsystem

Spring Tips: DataSources

Spring Tips: Spring Data JDBC

Spring Tips: Spring AI


  • Hot on the heels of jdk-21.0.2-ga, new versions of Coretto, Temurin, and Microsoft OpenJDK have hit the scene. Also, AWS has announced plans to stop supporting Java v1.x.
  • Over at the MicrosoftAzureDevelopers channel, there’s a fresh video series about migrating Java Tomcat apps to Azure App Service. It covers VM Migration using Azure Migrate, setting up GitHub Actions Workflow, and monitoring for performance and errors.
  • Google recently released two resources on Java performance optimization. First, a short video introducing optimization at build time, start time, and runtime, touching on tracing, jib, CRaC, class data sharing, native image compilation, and graalvm. Then, there's an article about startup time in Google Kubernetes Engine, including insights on image streaming, zstd compression, and ContainerD image layers reuse.
  • AWS Lambda SnapStart for Java, which optimizes performance by creating reusable snapshots, is now available in more regions – UAE, Europe, and Asia Pacific.
  • Over the last two quarters, new features, fixes, and stabilizations have been added to Java libraries for Azure Cosmos DB. The most significant ones are summarized in this article on Microsoft blogs.
  • An article on AWS blogs discusses sorting data in DynamoDB across the entire table rather than within a single partition key.
  • For implementing data versioning in CosmosDB, with past versions retained for auditing, history, and similar requirements, check out this article on Microsoft blogs.
  • Google advocates using Spanner database for non-relational data models. A new article on Google blogs details some NoSQL database concepts and how to migrate them to Spanner. There's also a piece on using emulated Spanner in testcontainer for local development and automation with GitHub Actions.
  • AWS ECS and Fargate now allow adding an EBS volume per task, with the option not to delete it after task termination. More details here.
  • Deploying Kafka and Zookeeper on AWS EKS with dynamic broker scaling and rebalancing is made possible for two projects – strimzi and DoEKS. Strimzi uses a Kubernetes Operator to manage Kafka clusters. DoEKS - Data on Amazon EKS - offers templates for deploying data platforms like Kafka, Spark, Cassandra on AWS EKS. Check out an example deployment of Kafka with scaling and performance tests on AWS blogs.
  • A use case for Amazon Managed Prometheus and Grafana appeared on AWS blogs. It builds a unified Observability system that collects metrics from CloudWatch and AWS Distro for OpenTelemetry across multiple AWS accounts and on-prem locations into a centralized account with AWS Prometheus and AWS Grafana.


  • Hibernate has rolled out version 6.4.2, which includes a bunch of minor and not-so-minor improvements. Dive into the details right over here.
  • Not to be outdone, Hibernate Reactive 2.2.1 Final is also out. Highlights include support for Order from Hibernate 6.3 and the ability to use the upsert() method (defined in StatelessSession) across all databases. Get more info here.
  • The 5th alpha release of Apache Groovy is now available, and so is Apache Groovy 4.0.18.
  • The 12th alpha release of Apache Maven 4.0.0 has also hit the streets.
  • Also, don't miss out on #1BRC - The One Billion Row Challenge - tailor-made for all those 'Java-is-slow' skeptics. Check out the results and description in Gunnar Morling's repo. And a blog on InfoQ nicely sums it all up.
  • The release of Testcontainers for Java 1.19.4 ships with bug fixes, improvements in documentation, and new features such as an enhancement in the exec command that supports setting a work directory and environmental variables; support for MySQL 8.3; and an increase of the default startup time for Selenium to 60 seconds. Further details on this release may be found in the release notes.
  • The first release candidate of Quarkus 3.7 features notable changes such as support for the LinkedIn OIDC provider, the ability to observe security events for an authorization check failure or success such that an application could use this to implement a custom security logging mechanism, and support for the Micrometer @MeterTag annotation, making it possible to add additional tags for methods annotated with @Counted and @Timed from method arguments. More details on this release may be found in the release notes.
  • LangChain4j 0.26.1 is now available. In this release following features are being introduced:

  1. ?Advanced RAG support;
  2. ?Multimodality with image inputs;
  3. Integrations with MistralAI, Cohere, Azure AI Search, Qdrant Engine, and Github.

  • Graal Cloud Native release 4.2.1 is here with support for Google Cloud, JDK 21, Micronaut Expression Language, Micronaut Control Panel, and more. Click here to learn more.
  • Apple silicon is now available, for free, to all open source repositories on Github using Actions.


?? Java's Plans for 2024 - Inside Java Newscast #61

?? Performance optimizations for Java applications

?? Code Review, you said? by Venkat Subramaniam

?? Data Oriented Programming in Java 21 by Nicolai Parlog

???Java 22 Previews Statements Before super(...) and this(...) - Inside Java Newscast #62


This issue was brought to you by the Avenga team:


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

Andrew Petryk的更多文章

社区洞察

其他会员也浏览了