Java API for WebSocket (JSR356)
Websockets is used through the Atmosphere framework included within Vaadin. Websockets are activated with the @Push annotation in your main layout class. If the server does not support this, long polling is used as a fallback method. Read more about it in Server Push Configuration.
Java Servlet (JSR340)
Vaadin applications are deployed and run as servlets. You can also use a custom servlet with Vaadin and use VaadinSession.getAllSessions(HttpSession) for sharing sessions.
Contexts and Dependency Injection for Java (JSR346)
Vaadin has an official integration library that supports to allow making your components and layouts CDI managed beans. In addition there are utilities like custom contexts and navigation events. Read more in the official documentation on how to build Vaadin applications with CDI.
Bean Validation (JSR303 and JSR349)
Vaadin has built-in support for validations. Check out the documentation on how to validate input.
Enterprise JavaBeans (EJB) (JSR345)
Use the Vaadin CDI integration to inject your EJBs. Typically used through an application specific Java implementation.
Interceptors (JSR318)
Fully supported by the Vaadin CDI integration.
Java EE Connector Architecture (JSR322)
Typically used through an application specific Java implementation.
Java Persistence API (JPA) (JSR338)
JPA is fully supported. We recommend using DeltaSpike.
Java Message Service API (JMS) (JSR343)
Typically JMS is used to implement backend services, but can also be used in the UI layer. Use the Vaadin CDI integration to inject JMSContext to your view classes.
Java Transaction API (JTA) (JSR907)
JTA is typically used automatically in service classes like EJBs, but UserTransaction can also be directly injected to your view objects if needed by your application logic.