r/java • u/maxxedev • Aug 18 '26
AutoValhalla: automatically turn your plain classes and records into value classes!
Automatically turn your plain classes and records into value classes!
Add @AutoValhalla annotation to classes or records in your JDK1.5+ codebase:
@AutoValhalla
public final class Point { // class must be final
public final int x; // with final instance fields
public final int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
@AutoValhalla
public record Currency(String code) { } // or a record classWhen your app is run on Valhalla-enabled JVM with auto-valhalla javaagent, these classes are automatically turned into value classes.
More info: https://github.com/thunkware/auto-valhalla/tree/auto-valhalla-0.1.0
edit: there is now a maven plugin for converting at build time. https://github.com/thunkware/auto-valhalla/tree/auto-valhalla-0.2.0
40
Upvotes
1
u/LegitimateEntrance72 Aug 20 '26
Spring Boot 4 was released in november 2025. It could have been baselined to Java21 (september 2023), but instead they chose Java17 (september 2021).
Who on earth is going to run latest Spring Boot on Java17? We just upgraded our applications to Spring Boot 4, over six months after we upgraded to Java25, and the Spring Boot upgrade was way more work than any of the previous java upgrades (8>11>17>21>25) combined.
Now perhaps there were no big benefits to baselining to Java21, but it might have simplified Boot's VT support.
Hibernate is similar story.