Differences between GWT and Vaadin

31,448

Solution 1

In GWT application logic is normally run on client side. It only calls server when it needs to read/save some data.

In Vaadin application logic is on server side. Client side must normally call server after every user interaction.

GWT advantage:
App logic (replies to user interaction) is faster as it is run locally in the browser. It's also relatively insensitive to bad network conditions. Network is used only when needed (to read/save new data), which saves net traffic (important for high traffic sites).

In this regard Vaadin is slower and introduces a lag in UI interaction which is annoying to user. If network is bad this will show in UI responsiveness.

Vaadin advantage:
App logic is run on the server so it can not be inspected by the user. Arguably (Vaadin claims) that makes it more secure.

Solution 2

A few more points:

  • A fundamental difference is that in GWT you have to separate your application into Client and Server code, no such distinction in Vaadin. This will affect the architecture of your application.

  • In GWT client code, you must code in Java, and have a limited subset of language features available (that the GWT compiler can translate into Javascript). In Vaadin, you can code in any JVM language, since everything runs in the server (I'm using Vaadin with Scala). This may or may not be relevant to you.

  • GWT compilation is VERY slow, although in development mode you have the emulator. This makes production environment updates painful (a GWT application I developed has grown pretty big, and currently takes around 15 minutes to compile).

  • It's very simple to extend GWT with 3rd party widgets, or roll your own. Creating new Vaadin widgets is more complex.

Solution 3

Another Vaadin advantage: you don't have to design or implement the client-server communication, that's built-in.

Solution 4

Differences between Vaadin and GWT:

A) Vaadin includes a server-side development model that:

  • Cuts number of code lines to half by reducing layers one has to implement for user interface.
  • Allows you to use any JVM based language for user interface - Scala, Groovy
  • Increases security by keeping user interface logic in the server
  • Allows synchronous calls to any backend API from the web server
  • Allows use of any standard Java libraries and tools for UI layer- in server side architecture applications
  • Does not need Java to JavaScript compilation step that often takes time or makes tooling complicated in GWT projects - instead you have the Vaadin client engine
  • Provides server push out of the box with no extra code needed

B) Vaadin provides a large set of high level user interface components. For GWT one would need to use commercial Sencha GXT for comparable component set.

C) Vaadin includes SASS based Valo theme engine that makes it easy to build good looking custom themes from your application. Valo is the latest theming for Vaadin.

D) Data binding: Vaadin has incorporated the ability to associate any widget directly to a data source such as database, file or anything else in the server-side. This enables to define default behavior of the widgets to act on data sources.

Vaadin vs GWT

Solution 5

With Vaadin you can also use built-in GWT when you want to do something on the client-side. This gives you both simplicity of server-side programming model (no communications, no browser programming needed) with being full control of what happens in the browser.

Share:
31,448

Related videos on Youtube

sundhar
Author by

sundhar

Updated on July 09, 2022

Comments

  • sundhar
    sundhar almost 2 years

    Can anyone suggest whether "GWT" or "Vaadin" are a better choice to design an application? Also: what are the differences in coding style?

  • koma
    koma over 12 years
    But for full flexibiltiy, GWT is much better then SmartGWT.
  • eeq
    eeq almost 6 years
    In addition to added security, there are other advantages like automatic client-server communication and long list of Java libraries available for application logic.