Puzzled by implements Serializable in Container

I am a bit puzzled by the fact that Container extends Serializable. What is the need behind this? (sorry if it’s a dumb question but I am very new to Vaadin).

Looking at QueryContainer, for instance, is even more disturbing as it contains private fields that are definitely not Serializable.

What am I missing?

In order to support application serialization (for clustering for example), Vaadin framework classes must be serializable. This does not imply that all applications must be serializable - only when clustering is needed.

If I follow what you’re saying, QueryContainer does not work in a cluster. Is that it?

QueryContainer does not work in a cluster where sessions are serialized, and is also otherwise quite limited and somewhat problematic.

For most if not all uses, you should consider
SQLContainer
a much improved successor for QueryContainer. I believe it does not fully support serialization, either, as references to the JDBC driver etc. are problematic.