2. Agenda
● State of the art
● Preparing for 6.0
● JDK & Jakarta EE
● Native and AOT
● Observability
● Pruning
● Roadmap
3. State of the art: 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 Spring Framework 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 and AOT 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 Observability initiative 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
Spring Framework 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 us know 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