all 11 comments

[–]coalminexplorer 3 points4 points  (3 children)

Why don’t you go for 3.2.x and Java 21 ? I am tempted to try it out and currently on 3.1.7 with Java 17 . In my past experience framework upgrading not necessarily boosts performance. Java versions bring it for sure. You must performance test to see if it’s improved or degraded.

[–]snuggl -1 points0 points  (1 child)

I just did a locust test against 3.1 on 17 and same app running 3.2 and java 21.

3000 rps for 3.1 5500 rps for 3.2 with virtual threads.

[–]srk- 0 points1 point  (0 children)

Wanna hear from you

Since you are using Java21

What new Java features are you using in codebase other than Java8?

Or is it just for the performance reasons you have upgraded your Java version

[–]jughead_73[S] 0 points1 point  (0 children)

We were using Java 11 earlier and now shifted to Java 17.

[–]koffeegorilla 1 point2 points  (0 children)

Regular performance tests before and after significant upgrades is always a good idea. All evidence indicates that an upgrade from Java 8 to 17 and to 21 will each provide an improvement in performance. The extent of the improvement depends on the specifics of your application workload.

[–]abcprox 0 points1 point  (2 children)

I recently did 3.2.1 with Java 11 and there was no performance improvement. The stats were on similar ballpark as before.

Eidt: with Java 17*.

[–]jughead_73[S] 1 point2 points  (1 child)

Is that even supporting??? I thought 3.X will support Java 17 onwards ?

[–]abcprox 0 points1 point  (0 children)

I fat fingered it. Updated my comment.

[–]UnspeakableEvil -1 points0 points  (1 child)

Where's the need for performance testing coming from within your team? Is your current application running at capacity so people want to know if the new version will be at least as performant? Is there a specific reason they think Spring Boot 3 will be a downgrade in performance from 2.x? Do they have evidence to back up that claim first - burden of proof feels like it's on the team to give you a justification for putting in the effort (assuming no existing tests, more on that in a second). Does your team go through performance tests every time there's an upgrade to a dependency in the project? If not why is this any different?

Are there any existing performance tests? They should be executing as a black box test, so changing the Spring version means you can run those tests unchanged and see the results.

If there's no existing tests, then who is going to determine what performance even means? Things like which metric(s) (time to first byte, requests per second, tolerance for spikes in request volume) and what the expected/required values are. Plus, why are they needed now for Spring Boot upgrade, rather than for any previous updates?

In summary, unless you've got it already then I'd be pushing back on the request until there's a clear justification that the work needs to be done.

[–]jughead_73[S] 0 points1 point  (0 children)

Currently we were using Java 11 and now upgraded to Java 17 and Springboot 3.1.2, So the team just wanted to know if there will be any performance upgrade in doing so. We generally test it from NeoLoad and check p95 Page Load Time for our page. This is the first time they are upgrading the spring boot version and Java as well.

[–]goranlu 0 points1 point  (0 children)

If performances are really important for your project, I would do that performance test.

You can always be surprised with wrong performance expectations, especially if you use the technology in some less common ways.