The programming model of Vaadin is beautifully simple and fun
It's similar to what GXT/GWT promises to be, but even simpler. You can stop agonizing over Java-to-JavaScript compilation time, data serialization, and asynchronous calls. Read on to find out why Vaadin is a great alternative to GXT and what the key similarities and differences are.
Learn how to migrate from GXT to Vaadin 8
Download a free guide for migrating GXT applications to Vaadin framework. The guide goes through seven practical steps for smarter migration and contains a full sample project.
- Reuse the majority of your existing GXT/GWT code base as is
- Use a development model similar to GXT
- Rewrite the UI layer gradually and only when needed
Things that make you feel right at home
VerticalLayout layout = new VerticalLayout();
Button button = new Button("Click Me!");
layout.addComponents(button);
Java on the server-side with automated communication to the client
Vaadin’s API is 100% Java. Vaadin applications are run on Java Virtual Machine in the server and the client is JavaScript compiled from Java in the browser - no plugins required. In addition to Java, you can use any JVM language. No HTML or JavaScript is needed.
<vaadin-vertical-layout size-full>
<vaadin-button style-name="primary"
plain-text _id="button">
Click Me!
</vaadin-button>
</vaadin-vertical-layout>
Declarative Support
Vaadin views can be defined using declarative syntax.
Button button = new Button("Click Me!");
button.addClickListener(event ->
Notification.show("You clicked the button!"));
Event driven programming model
Vaadin Framework offers an event-driven programming model for handling user interaction.
Grid grid = new Grid<>();
grid.setItems(persons);
grid.addColumn(Person::getFirstName)
.setCaption("First Name");
grid.addColumn(Person::getLastName)
.setCaption("Last Name");
Easy and strong abstraction of complex web technologies
The Vaadin engine runs in the browser as JavaScript code, rendering the user interface, and delivering user interaction to the server. As the client-side engine is executed as JavaScript in the browser, Vaadin supports a wide range of browsers, so that the developer does not need to worry about browser support.
Component based architecture
A familiar component-based programming model helps you to build modern single-page HTML5 apps easily. You can apply the skills you have learned with previous UI frameworks, like Swing and GWT, and concentrate on your domain problems and get a much more modern UI.
Large collection of good-looking widgets
Vaadin UI components come with a fresh theme and a font icon set built-in. The Valo theme engine allows easy customization with SASS variables.
No browser plugins are needed for using applications made with Vaadin. The UI logic of an application runs as a Java Servlet in a Java application server. HTML, JavaScript, and other browser technologies are essentially invisible to the application logic.
Things that make you never want to go back
Server-side architecture keeps your UI code and data secure
Vaadin applications are run on a Java application server. The UI code and business logic is run securely on the server runtime. You are not exposing anything about it to the outside world. Because your data access is also on the server, you can enjoy the benefits of caching and optimizations in the Java stack.
- Vaadin Architecture Overview
- Framework introduction
No need to implement REST services nor make RPC calls
You don't have to make any RPC calls from the client-side because the communication between browser and server is taken care of by the framework. Server-side architecture allows you to make secure requests through your data access layer without a requirement to expose anything through a remote service.
Java EE and Spring integration
@Theme("valo")
@SpringUI
public class MyUI extends UI {
@Autowired
private Greeter greeter;
@Override
protected void init(VaadinRequest request) {
setContent(new Label(greeter.sayHello()));
}
}
@CDIView(LoginView.VIEWNAME)
public class LoginView extends CustomComponent implements View {
public final static String VIEWNAME = "login";
@Inject
public LoginView(User user) {
// ...
}
}
No GWT compilation necessary
Although Vaadin is built on top of GWT, most of the time you spend on the server side code implementing your business logic and data access, which doesn't require GWT compilation at all. No more CPU fans spinning madly. If you use some GWT extensions available on Vaadin Directory, you have to compile those only once, or you can even rely on cloud compilation.
Core libraries and most of the extensions are under a Apache 2.0 license
Vaadin Core offers you the whole framework functionality and the vast number of community developed add-ons. Commercial tools and support options are available, if you so choose.
Almost 700 add-ons available with an open source license.
Because of easy and powerful extensibility, there are a multitude of community developed add-ons that extend Vaadin for more specialized functionality.
Stability and easy migration paths
Vaadin is a mature product with stable APIs. We offer 5 years of maintenance for major releases. Simple migration path has been available for each major release since 2002.
Vaadin Designer, a drag-and-drop UI tool
Easy and fast drag-and-drop tool for Eclipse and IntelliJ IDEA. Available in Pro and Prime subscriptions.
Active community
An impressive number of published add-ons and the number of people active in the Vaadin forums testify for the popularity of Vaadin among the developers.