Vaadin framework does basically everything it does on top of the Java Servlet API, which lies hidden deep under the hood, with the terminal adapter being the lowest level layer for handling requests from the web container.
When the web container gets the first request for a URL registered for an
application, it creates an instance of the
ApplicationServlet
class in Vaadin framework
that inherits the HttpServlet
class defined in Java
Servlet API. It follows sessions by using HttpSession
interface and associates an Application
instance with
each session. During the lifetime of a session, the framework relays user
actions to the proper application instance, and further to a user interface
component.