The Vaadin framework is implemented on top of the Java Servlets API. When the web container receives the first request it instantiates the ApplicationServlet class. This is one of Vaadin framework classes. It extends HttpServlet.
When developing a web application using the Vaadin framework we should define a class that extends com.vaadin.Application. Each and every user session is associated with a specific object instantiated from that class. The ApplicationServlet object takes care of that.
When the user interacts with the user interface events are created. They are first processed on the client side using JavaScript, and then they are passed over all the way through the HTTP server to the terminal adapter. The terminal adapter is responsible for communicating these events to the server side component. We can handle those events in our code using the events delegation model. The following video clip shows that.
In my Vaadin course I chose to dedicate a separated topic for the Vaadin framework architecture. You can find my course community version available for free personal usage at www.abelski.com.