Get ahead
VMware offers training and certification to turbo-charge your progress.
Learn moreOn behalf of everyone that has contributed, I am pleased to announce that Spring Native for GraalVM 0.8.3 has been released and is available from Spring milestone repository, check the updated reference documentation for more details.
Spring Native for GraalVM provides an incubating support for compiling Spring applications to native executables using the native-image compiler, in order to provide a native deployment option designed to be packaged in lightweight containers. In practice, the target is to support your Spring application (typically a Spring Boot one), unmodified, on this new platform.
0.8.3 is now based on Spring Boot 2.4.0 and the first release based on a stable version of Spring Boot.
0.8.3 is designed for GraalVM 20.3.0 that has just been released.
Until now, in order to compile Spring applications to native, you had to use @SpringBootApplication(proxyBeanMethods = false)
and @Configuration(proxyBeanMethods = false)
since CGLIB proxies created by proxyBeanMethods = true
(previous default behavior) are not supported in native.
As of Spring Native 0.8.3, @SpringBootApplication
and @Configuration
do not create CGLIB proxies anymore, so they are native compliant out of the box. We have also added a verification mechanism that checks that your application and libraries do not use cross @Bean
invocations (only supported with CGLIB proxies) and throw an error if such pattern is detected. You can switch off this verification if needed with -Dspring.native.verify=false
.
As usual, we are working to improve gradually the scope and the quality of our native support, see the detailed changelog for more details.
Our next 0.9.0 milestone expected early 2021 will be an important one since it will materialize the beginning of our beta support on a subset of Spring Boot starters like Spring MVC, WebFlux, Data (JPA, JDBC, Elastic Search, Neo4j, MongoDB, Redis, R2DBC), Security, Batch, Function, etc.
We are going to do several big refactorings to gradually transform the project into modules that could be integrated later in Spring top level projects. As part of this process, we are going to introduce a set of build time transformations that will be done on your application in order to bring Spring Native to the next level in term of robustness and efficiency.
In parallel, we also collaborate with the GraalVM team on JUnit 5 native testing and helping JVM libraries to support native compilation out of the box in a maintainable way. We will share more on that effort early next year.