What to Expect in Spring Boot 3: Roadmap, Release Date, and Deprecations
According to our latest Java Developer Productivity Report, Spring Boot is used by nearly 74% of Java developers working with microservices. With Spring Framework 6 and Spring Boot 3 scheduled for a general availability release later this year, many teams are curious as to whether or not they should upgrade their Spring framework version.
In this blog, we explore what we know about the Spring Boot 3 release, including potential features, improvements, changes to dependencies, and more.
- Spring Boot 3 Roadmap
- What to Expect in Spring Boot 3
- Final Thoughts
Spring Boot 3 Release Roadmap
Spring Boot 3 is the long-awaited follow up release to Spring Boot 2 release. It is currently available as an M1 release under Spring Boot 3.0.0-M1, with Spring Boot 3.0.0-M2 scheduled for delivery on March 24.
Releases follow a MAJOR.MINOR.PATCH version scheme, with M indicating a milestone release, RC indicating a release candidate release, and SNAPSHOT indicating a build.
According to the Spring versioning guidelines from 2020, the M2 version would typically be followed by one to two release candidates before being released to the general public.
Spring Boot 3 Release Date
The Spring Boot 3 general availability release date is currently scheduled for late November 2022.
Spring Boot 3 Release Cycle
According to the Git Hub wiki for Spring Frameworks, Spring Boot “releases a new major or minor version every six months (in May and November),” with patches released as necessary. Looking at historical releases, major Spring versions have been released every four years, with Spring Boot 1 in 2014, Spring Boot 2 in 2018, and Spring Boot 3 planned for 2022. Minor releases fill in the gaps between those releases, with a minor release every six months.
What to Expect in Spring Boot 3
Based on the Spring Boot 3.0.0-M1 release, we can make some educated guesses as to the new features, improvements, and dependencies users can expect in the Spring Boot 3 GA release.
Spring Boot 3 Features
Spring Boot 3 features, at least judging by the 3.0.0-M1 release changelog, have largely remained the same when compared to Spring Boot 2.x releases. The main changes, as we’ll discuss later, are around Java version (and Gradle version for Gradle users), Spring Framework version, Jakarta EE version, and the resulting dependency upgrades and deprecations.
Spring Boot 3 Dependency Upgrades
The biggest change in Spring Boot 3 is the decision to use Java 17 as the minimum version. Requiring Java 17 and newer is a big move, with Spring set to be the first major framework to require this recent LTS release.
Spring Boot 3 will also require Spring Framework 6.For Gradle users, Spring Boot 3 will require Gradle 7.3 or later.
The remaining noteworthy dependency upgrades can be broken into two groups, Spring projects, and third-party libraries.
Dependency Upgrades for Spring Projects
Spring Boot 3.0.0-M1 introduces dependency upgrades for a number of Spring Projects, including:
Spring Integration 6.0.0-M1
Spring Security 6.0.0-M1
Spring AMQP 3.0.0-M1
Spring HATEOAS 2.0.0-M1
Spring Session 2022.0.0-M1
Spring Batch 5.0.0-M1
Spring Kafka 3.0.0-M1
Spring Web Services 4.0.0-M1
Spring Data 2022.0.0-M1
Spring LDAP 3.0.0-M1
Spring Framework 6.0.0-M2
Spring REST Docs 3.0.0-M1
Given that all of these projects are currently designated as milestone releases, these dependency upgrades will assumedly update to reflect the latest major versions as they’re released.
Third-Party Dependency Upgrades
Spring Boot 3.0.0-M1 also introduces dependency upgrades for a number of third-party libraries, including:
Jakarta JSON Bind 3.0
Jakarta WebSocket 2.0
Jakarta Mail 2.0
Jakarta WS RS 3.0
Hibernate Validator 7.0
Jakarta Persistence 3.0
Jakarta XML Bind 3.0
Jakarta Activation 2.0
Jakarta Servlet 5.0
Jakarta XML Soap 2.0
Jakarta Annotation 2.0
Jakarta Servlet JSP JSTL 2.0
Jakarta JMS 3.0
Jakarta Transaction 2.0
Jakarta JSON 2.0
Jakarta Validation 3.0
The most notable, and numerous, changes here (and in the deprecations) are related to the change from Jakarta EE 8 to Jakarta EE 9, and the underlying Servlet and JPA specifications.
Spring Boot 3 Deprecations
Most deprecations in Spring Boot 3.0.0-M1 fall into three categories:
- Classes, methods, and properties previously removed in Spring Boot 2.x releases
- Jakarta EE 9 dependencies where packages don’t currently support the new package names in Jakarta EE 9
- Support removals
Removed Classes, Methods, and Properties
As noted above, Classes, methods, and properties that have been removed in Spring Boot 2.x releases have been removed in the Spring Boot 3.0.0-M1 release. That will likely remain the case with the GA release.
Jakarta EE 9 Package Deprecations
The Spring Boot 3.0.0-MC release notes point to a handful of Jakarta EE 9 package (likely temporary) package deprecations, including:
H2’s web console
SMTP appending with Logback
SMTP appending with Log4j 2
Support Removals and Other Deprecations
Spring Boot 3.0.0-M1 has also removed support for a few additional dependencies, including Apache ActiveMQ, Atomikos, EhCache 2, and HazelCast 3. Jersey is another notable deprecation, and has been removed until it offers support for Spring Framework 6.
There have also been a number of configuration property changes and deprecations in between 2.7.0-M1 and 3.0.0-M1. Check out the full list.
With what we know about the Spring Boot 3 release based on the first milestone release, this edition of the popular Java framework is focused on modernizing its dependencies to accommodate a wave of innovations within the Java ecosystem.
Be sure to stay tuned to our blog for continuing coverage on Spring Boot 3, Spring Framework 6, and latest releases and innovations in the Java landscape.
Want to Speed Up Development on Your Java Application?
Skip redeploys and save valuable Java development time with JRebel. Try free for 14 days via the link below.