Flow is a Java web framework for building modern web apps in Java. You can create UIs in pure Java, or use HTML templates to create the UI, and then bind it to any backend using Java.

The basic features in Flow are:

  • An architecture that lets you concentrate on the UI. No need to think about client-server communication.

  • A set of carefully crafted UI components that focus on both the end-user and developer experience.

  • Powerful abstraction layers to build your own reusable UI components with either Java or HTML templates.

  • Data binding API to connect UI components to any backend using type-safe Java.

  • Router API to create hierarchical page structures for the user to navigate.

For example, you can create a UI in Java as follows:

// Create an HTML element
Div layout = new Div();

// Use TextField for standard text input
TextField textField = new TextField("Your name");

// Button click listeners can be defined as lambda expressions
Button button = new Button("Say hello",
          e -> Notification.show("Hello!"));

// Add the web components to the HTML element
layout.add(textField, button);

When using the Flow Java API, the components control their JavaScript counterparts in the browser. You do not need know anything about the HTML or JavaScript that runs under the hood.


Get Started
Quickly set up a new Vaadin application development environment.
Application Basics
Basics of creating an application using Flow.
Routing and Navigation
Vaadin applications consist of one or more views and routing defines how URL addresses are mapped to those views. Navigating around the application works together with routing.
How to use components, create your own, or integrate 3rd party web components.
Data Binding
Show data in listing components and collect user input using form fields.
Element API
You can control the HTML DOM in the browser from the server-side using the Element API.
Drag and Drop
Drag and drop between components as well as between the UI and the operating system.
In addition to imperative Java code, you can build views declaratively using templates. The components in such a template can be bound directly to data items.
You can integrate Vaadin with many other Java application technologies, such as Spring, CDI, OSGi, and Karaf. You can also embed Vaadin applications/components in other applications or web pages.
Instructions how to configure your application and development environment.
Deploying to Production
Deploying to a production server involves compiling and packaging the application to be suitable and optimized for the server.
Advanced Topics
A collection of miscellaneous important topics and features that you may need in Vaadin applications.