Uncategorized

This Month in Spring – November 2022

Hi, Spring fans! It's been a few months since we last chatted! It feels like it's been an era, but it's only been a couple of months, but boy have I been busy in that time!

First, I've been traveling. I went to Austin, Texas, for the new Kafka Summit. I went to Antwerp, Belgium, for the first installment of Devoxx, Belgium, in 2019. I went to Las Vegas, Nevada, for the first JavaOne since 2017. I went to Malaysia, Thailand, and Singapore for customer meetings and public events, including one hosted by the amazing Developer Kaki community in Kuala Lumpur, Malaysia. And I just got back last night from Seattle, Washington, for the Seattle Java User Group there. Along the way, I met many friends, had amazing food, and – unfortunately – got a really bad flu. I checked: it wasn't COVID. But it was something. Yuck. I'm still congested, almost three weeks later! Sigh. I suppose it could be worse. But that's just not the kinda thing that should be open-sourced. Either way, all in all, I had a ton and am so grateful for the opportunity.

I suppose that's key, isn't it? Next week, here in the United States, it'll be Thanksgiving, a day in which we're supposed to take time to be thankful for the everyday good fortunes we share. Speaking for the Spring team, I'm sure, we are grateful for you, dear reader. It goes without saying, but it shouldn't: you're awesome, and we appreciate you.

The community makes Spring, with its many contributions, amazing ideas, pull requests, issues, Gitter.im conversations, Stack Overflow questions, Twitter comments, etc.: Spring is a living breathing thing and it exhales everytime the community inhales. Thank you.

I'm writing this on the 17th of November, 2022, and just yesterday we – the Spring community – reached a wonderful milestone: we shipped Spring Framework 6.0! This release – the first major new generation of Spring since Spring Framework 5.0 released in September, 2017 – is a huge new release. In no particular order, here are some of the amazing new features and themes in the release.

  • preliminary support for CRaC (Coordinated Restore at Checkpoint) – this initiative lead by Azul Systems is designed to specify a standardized mechanism whereby JVM applications can passivate and rehydrate their state to dramatically boost startup time.
  • want to use Project Loom? We've enabled some extension points in Spring Framework in anticipation of a GA version of Project Loom.
  • Java 17 is the new baseline revision required to use Spring Framework 6. This is a huge opportunity!
  • Jakarta EE 9 and 10 are now supported throughout the Spring portfolio projects. Finally, at long last, we can look forward to improvements in Jakarta EE, now that the great package migration (from javax.* to jakarta.*) is in the rearview mirror!
  • A huge theme in Spring Framework 6 and across the entire portfolio is the new support for GraalVM, provided by our ahead-of-time engine. This engine means there's a new phase in your typical Spring Boot application's lifecycle: compile time. You can build applications that startup in tens of milliseconds and – most valuably – take less than a hundred megabytes of RAM for everything: your application, the libraries it uses, the JRE, and even the various libraries being linked and loaded (and shared!) from the operating system. This is a huge deal! Imagine being able to deploy your Spring Boot application for 1/10th or 1/20th of the current footprint and corresponding costs! It's a win-win.
  • Don't know whether to use Spring Cloud Square Retrofit, Sprign Cloud Openfeign, or Sprign Retrosocket? Just want a simple, concise, interface-based mechanism for creating declarative HTTP and RSocket clients? Look no further than Spring Framework 6 where the abstraction lives in Spring Framework itself.
  • Want a consistent way to represent errors in your HTTP APIs? The Problem Details for HTTP APIs RFC can help, and Spring Framework supports it for both Spring MVC and Spring Webflux applications.
  • Spring Framework 6 sports integration with the new Micrometer Tracing module; you no longer need to use Spring Cloud Sleuth. This means that there's now one abstraction, that sits below Spring Framework, for both metrics and distributed tracing. In addition, there's a new Observation abstraction that provides a consistent, unified approach to both metrics and distributed tracing.

And I haven't even begun to cover some of the smaller details. Either way, there's a lot of cool stuff here. Get the bits in the usual spot: start.spring.io!

And, best part? Next week we will release Spring Boot 3, which builds on Spring Framework, on Thanksgiving day! There really is a lot to be thankful for 🙂 Happy thanksgiving!

And with that, let's dive into this month's roundup!