From Spring Native to Spring Boot 3

Engineering | Sébastien Deleuze | February 23, 2023 | ...

Today, we are finishing to transition the Spring support for building native executables from the experimental Spring Native project to the official Spring Boot GraalVM native image support.

In practice, that means we are archiving the Spring Native GitHub repository and moving it to the https://github.com/spring-attic organization. There will be no new release of Spring Native (based on Spring Boot 2.x) and we are encouraging all Spring Boot users to migrate to Spring Boot 3.x to leverage its official native support.

SpringOne

If you missed SpringOne keynote, be aware that the recording of the section dedicated to Spring Boot 3 native support is available in 2 parts.

Part 1 with Thomas Wuerthinger, the GraalVM project lead, about the win-win collaboration between Spring and GraalVM teams. SpringOne keynote with Thomas

And part 2 with Sandra Ahlgrimm, Senior Cloud Advocate at Microsoft, is about running Spring applications in a scale to zero fashion on Azure. SpringOne keynote with Sandra

You can also watch the From Spring Native to Spring Boot 3 breakout session Moritz Halbritter and I presented.

Let's celebrate!

The goal of each Spring experimental project is to reach the General Availability stage, and that's what Spring Native did with Spring Boot 3 native support. We were not sure to succeed given the level of quality expected from the Spring portfolio and the technical challenges we had to solve. But we did it!

So let's use this opportunity to celebrate this achievement with the Spring community and the Spring team which have been collaborating closely to make native a first class compilation target for Spring applications after 3237 commits, 330 pull requests and 2800 GitHub stars. This would have not been possible with all the useful feedback we got.

I would like to send a special thank you to Andy Clement who contributed most of the project initially, and to Stéphane Nicoll and Brian Clozel who where instrumental in making native officially supported in Spring Boot 3.

But let's also celebrate the fact that we now have the Gradle and Maven Native Build Tools plugins in order to provide support out of the box for various open source JVM libraries. So far Spring has been the most prolific contributor but we see an increasing number of other contributors in pull-requests coming to the GraalVM metadata reachability repository.

Libraries and Frameworks Tested with Native Image

And the best part of it is that Spring Boot 3 does not require any GraalVM substitution to patch Spring or JVM libraries. The code you run is the code of your open source library, which means better security, better debuggability and better maintainability.

Let's not forget all the energy we have put in introducing an extensive integration testing infrastructure that has materialized via the spring-aot-smoke-tests project that allow to track the status of the AOT and native support for a wide range of use cases. AOT smoke tests CI

The journey continue

Thanks to its Ahead-of-Time transformation engine, the quality of the native support provided by Spring Boot 3 is already significantly better than with Spring Native, but is obviously not perfect so we are continuing to increase the scope of the support in each Spring Boot patch releases with improvements in the various projects of the Spring portfolio. And we are excited to be able to benefits from upcoming GraalVM native image compiler and tooling improvements.

Cheers!

Get the Spring newsletter

Stay connected with the Spring newsletter

Subscribe

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all