Juergen Hoeller outlines plans for Spring Framework 6.0, which will mark the beginning of a new generation with Java 17 and Jakarta EE 9 as the new baseline. It will include foundational support for native executables and AOT processing via Spring Native as well as unified observability APIs. Some outdated features will be pruned or deprecated to future-proof the framework. An initial milestone release is planned for late 2021 with a general availability target of October 2022. Community feedback on target infrastructure, configuration preferences, and relevance of EE APIs is sought to guide the roadmap.
Agenda
● State ofthe art
● Preparing for 6.0
● JDK & Jakarta EE
● Native and AOT
● Observability
● Pruning
● Roadmap
3.
State of theart: Spring Framework 5.3.x
Spring Framework 5.3.x remains in active development
● On its established infrastructure baseline
● Java 17 support - against a Java 8 baseline
● Java EE 8 focus - against a Java EE 7 baseline
● Keep using Tomcat 8.5 / 9.0, Jetty 9.4 / 10, etc
Spring Boot 2.6 and 2.7 based on Spring Framework 5.3.x line
● Java 17 support in Boot 2.6 - November 2021
● Further features and infrastructure upgrades in Boot 2.7 - May 2022
4.
Preparing for SpringFramework 6.0
Spring Framework 6.0 will be the beginning of a new generation
● Development branch (main) to be established in mid September
● Kicking off the milestone phase at the end of 2021
● Entering the release candidate phase in mid 2022
A series of 6.x feature releases to follow
● Release cadence not decided yet - might follow Boot’s half-year rhythm
● In any case, you won’t simply be upgrading to Spring Framework 6.0 GA
● You will rather be following the Spring Framework 6.x feature releases
5.
Java 17 &Jakarta EE 9
A new baseline for a new generation of Spring applications
● Java 17 - many Java language, core API, JVM runtime benefits
● Jakarta EE 9 - e.g. Tomcat 10, Jetty 11
● Hibernate ORM 6, etc
Future-proof - but with some initial compatibility breakage
● JDK 17 enforces illegal access rules - no general escape hatch anymore
● Jakarta EE 9 repackages javax to jakarta namespace - e.g. jakarta.servlet
● Preparing for upcoming further evolution: JDK 18 & 19, Jakarta EE 10
6.
Native executables andAOT processing
Spring Native initiative moving into Spring proper
● Deploying a native executable to GraalVM
● AOT processed metadata available for regular JVM deployment as well
● Foundational facilities and key enablers in Spring Framework 6.0
First-class support for native executable deployment in Boot 3.0
● Spring Boot starter for native applications
● Build plugins and native configuration hints
● Support for specific GraalVM versions
7.
Observability revisited
Spring Observabilityinitiative moving into Spring proper
● Unified API for recording and measuring actions - e.g. metrics & tracing
● Integrating with Micrometer, Wavefront, Zipkin, Brave, OpenTelemetry
● Instrument once using a common API for many observability benefits
A portfolio wide initiative
● Spring Framework 6.0 introducing core abstractions
● Spring portfolio projects consistently integrating with them
● Spring Boot 3.0 auto-configuring the observability backend
8.
Pruning and deprecations
SpringFramework 6.0 is an opportunity to drop outdated features
● Outdated core container features - e.g. autowiring setters by name/type
● Outdated configuration variants - e.g. certain FactoryBean arrangements
● Outdated configuration settings - e.g. certain web-related options
Also, an opportunity to drop outdated third-party integrations
● Generational baseline upgrade for other open source projects
● Driven by Jakarta EE 9 and its namespace change
● Possibly even dropping certain EE support arrangements (e.g. EJB, JAX-WS)
9.
Roadmap
Spring Framework 6.0- a complete draft roadmap
● 6.0 M1 in November/December 2021
● 6.0 M2
● 6.0 M3
● 6.0 M4
● 6.0 RC1 in July 2022
● 6.0 RC2
● 6.0 RC3
● 6.0 GA in October 2022
10.
Community involvement
Let usknow about your target infrastructure for 2022+
● JDK 17 LTS - or rather following JDK 18, 19, etc
● Third-party open source projects in strategic use
● Backwards compatibility concerns
Configuration style preferences vs. unused features
● Preferred configuration variants in strategic use
● Long unused features that you would not miss
● Relevance of EE APIs and EE deployment options