RFC: Require Java 21+ for Vaadin 25

With all the comments… it looks like Java 17 might be the best option for Vaadin 25… Looking e.g. at Jakarta, it might be possible that Jakarta 12 is coming mid 2026 with Java 21 requirement - which Spring (Boot) probably also wants to adapt… with a major follow-up in end of 2026 or beginning of 2027 with Java 21 (or even 25) as baseline and Vaadin 26…

With that in mind… it could really be a major per year…

https://jakartaee.github.io/platform/jakartaee12/JakartaEE12ReleasePlan

I would want us to be able to start using Java 25 by the beginning of 2027… Projecting from this discussion, that might be more realistic for 2029 or so.

1 Like

We decided to skip this idea for Vaadin 25. Let’s see what the world looks like when Vaadin 26 becomes relevant.

3 Likes

@Leif Regardless of the decision, thank you for listening to our voice during the process. Not many (if any at all) vendors I know use RFC for strategic decisions, kudos!

6 Likes

Update: we have revisited this question and decided to require Java 21 or newer for Vaadin 25.

This change is based on balancing all the factors that have already been mentioned and also considering these new points:

  • Like other recent Vaadin major versions, we are planning to maintain Vaadin 25 for 15 years. We want to pick fundamental dependencies that are as likely as possible to make sense until 2040. While that’s too long to make any guesses, a newer Java “LTS” is still more likely to take us further.
    • As a side note, I just realized that we’re already over 12 years with Vaadin 7 and it’s humbling to see how smooth the maintenance effort has been despite some initial internal worries when the plan was put into place.
  • Debian 13 with native support for Java 21 has been released. We don’t expect that large enterprises will update their Debian infrastructure right away but there’s now a confirmed path ahead.
  • While we don’t have any significant use of Java 21 features planned specifically for Vaadin 25.0, we still want to keep the door open for increased usage in later Vaadin 25.x updates.
  • This enables add-ons that target Vaadin 25 to benefit from Java 21 without worrying about compatibility in applications.

Vaadin 24 will remain compatible with Java 17 for those who cannot adopt Java 21 right away. It will be supported for free until June 2026, until March 2028 as regular commercial maintenance, and until 2038 as extended maintenance. Just like with previous major versions, we will backport bug fixes and occasionally also new features to Vaadin 24 also after Vaadin 25 has been released.

5 Likes

If read further down in that Jakarta EE 12 document you linked, you will see that support for both Java 21 and Java 25 is required.

Also, I recall that in earlier days of Jakarta EE, their unofficial plan was to release a major version within a half year after every Java LTS version. They have struggled to make that happen because of sizable technical challenges (largely overcome now). I would suggest Vaadin have same goal of a major new version within a quarter or two of every Java LTS version.

1 Like

Something like that could make sense but I would like to wait and see how things turn out in practice before making any specific plans. We typically also want to wait for Spring which means that the chain of updates would be Java → Jakarta EE → Spring → Vaadin with some delay at each step.

You have to be very careful with virtual threads in jdk 21 - the improvement in JDK 25 is significant:
JEP 491: Synchronize Virtual Threads without Pinning

1 Like

Hi Leif,

I saw on your presentation on Vaadin Create 25 that you indeed confirmed Java 21 as a minimum for Vaadin 25.

On the same slide you also mentioned Spring Framework 7 and Spring Boot 4.

Are those minimal requirements? Or did you mean that it was supported, but not required.

Thanks.

Kristof

Java 21 is a minimal requirement. We have confirmed that Java 25 works great and we expect to also support future Java versions.

Spring Framework 7 and Spring Boot 4 are supported but not required. Anything that worked without Spring in Vaadin 24 also works without Spring in Vaadin 25 and all new general features in Vaadin 25 also work without Spring.

Note that in the case of Java, the version number is explicitly “or newer” whereas with Spring it’s only that version and no assumptions about future Spring versions.

1 Like