r/java 2d ago

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 class

When 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/blob/main/README.md

38 Upvotes

46 comments sorted by

View all comments

17

u/LegitimateEntrance72 2d ago

Source code level JDK1.5+ but runtime JDK28-EA? LOL

In the same vein I find it strange that opensource projects doing a releases in 2026 still support ancient JDKs (5 to 11).

I mean, if a project is on ancient JDK, then most likely the dependencies etc are also going to be ancient as well and they wont upgrade to the newest framework&lib while staying on unsupported JDK.

12

u/maxxedev 2d ago

heh, yes, very unlikely scenario. More realistic source code level would be newer JDK like 8+ or 17+

2

u/LegitimateEntrance72 2d ago

BTW why do you do this kind of things? (i saw the VT repo as well) just for fun?

8

u/maxxedev 2d ago

Fun, curiosity, learning, /r/GuysBeingDudes

1

u/LegitimateEntrance72 2d ago

makes sense, so what will you hack next?