vaadin / framework

Vaadin 6, 7, 8 is a Java framework for modern Java web applications.
http://vaadin.com/
Other
1.77k stars 729 forks source link

Jakarta / Servlet 6 Support for Extended Maintenance #12566

Open knoobie opened 1 year ago

knoobie commented 1 year ago

Extracted from https://github.com/vaadin/flow/issues/14783

Is there a timeline for official Vaadin 8 Jakarta Support for extended Maintenance?

Looking at the comment in 8.18.0's release notes, currently it looks kinda un-official by using MPR.

This is only needed for MPR 24+, and is NOT guaranteed to work as generic Jakarta support (even though it does so at the moment) as we may add MPR specific functionality or even hard MPR dependencies in the future.

Source: https://github.com/vaadin/framework/blob/master/CHANGELOG-VAADIN8.md

TatuLund commented 1 year ago

Is there a timeline for official Vaadin 8 Jakarta Support for extended Maintenance?

There is no timeline planned at the moment, we are having reactive as per basis of business needs approach with this. Our assumption is that in typical cases Vaadin 8 is not being used in newer infrastructure. Migration has not been possible as Vaadin 23/24 requires Java 11 (or 17, Servlet 5) and hence container update and other 3rd party dependency update. But when that update becomes viable, there is potential need for MPR. That is why we implemented support for that path proactively.

Looking at the comment in 8.18.0's release notes, currently it looks kinda un-official by using MPR.

Yes. From Vaadin 8.18.0 onwards there is now Jakarta Servlet 5/6 compatible vaadin-servlet artifact variant included. The portlet part was re-arranged so that it does not interfere. We have not done anything else. This will basically allow vanilla Vaadin 8 apps, which do not depend on Push, CDI or Spring add-ons to run. This in practice scopes out most of the major real life applications, hence we do not claim official support as of now.

In case of MPR, Flow Push, CDI or Spring modules are used, hence no need to migrate them Vaadin 8 side.

knoobie commented 1 year ago

There is no timeline planned at the moment, we are having reactive as per basis of business needs approach with this. Our assumption is that in typical cases Vaadin 8 is not being used in newer infrastructure

That assumption is correct. Except for the case where the infrastructure gets End-of-Life by itself and businesses are forced to update it and fall into the pitfall that Vaadin 8 needs to run on newer servlet containers. It's probably not something to be widespread happening in 2022 or 2023, but something to keep in mind on the long run.

Thanks for the heads up!

rPraml commented 11 months ago

We would also need a jakarta compatible vaadin 8 version soon (Spring supports ends october).

We did some tests with the Apache Tomcat migration tool for Jakarta EE to produce jakarta compatible artifacts and it seems to work. Nevertheless we would prefer to use an official build instead of a bytecode patched version as we pay a lot of money for the extended support

TatuLund commented 11 months ago

We would also need a jakarta compatible vaadin 8 version soon (Spring supports ends october).

Based on this comment I would assume you would need at least Spring add-on with Jakarta name space and Spring Boot 3 support? Another question is, do you use Push?

Note, there is already vaadin-server-mpr-jakarta, since Vaadin 8.18.0, which supports jakarta.servlet, so that part is already done.

rPraml commented 11 months ago

We had to transform the artifacts "vaadin-server", "vaadin-spring" and "vaadin-charts" in our test, that did we ~6 months ago. With the transformed artifacts, we could start our application with spring 3 in a tomcat 10 container.

Thanks for the info with "vaadin-server-mpr-jakarta", I'll give this a try in the next test run.

Another question is, do you use Push?

no, we do not use push

TatuLund commented 10 months ago

no, we do not use push

That will make things easier for you.

and-k commented 2 months ago

I'm working on an older Vaadin 8 UI application currently running on Spring Boot 2. Since this application now needs to be updated to Spring Boot 3, I'm thinking if the Vaadin MPR could be a solution for this. However, since this application uses push, I was wondering what the described issues are regarding push and MPR and whether they still exist?

TatuLund commented 2 months ago

The latest status of the Servlet 6 support related to Vaadin 8 are the follows:

When using MPR, Push and Spring are used via Flow. If you are Extended Support customer of ours, I recommend you to contact us via Expert Chat and we can discuss the possible options better. It is hard to say is the MPR right choice for you without knowing details of your application. Setting up MPR is not always trivial and you need to refactor things a bit.