Differences between GWT and Vaadin

前端 未结 10 1574
小鲜肉
小鲜肉 2021-02-01 01:21

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

相关标签:
10条回答
  • 2021-02-01 01:40

    tl;dr

    whether "GWT" or "Vaadin" are a better choice to design an application

    It is not an “either-or” question.

    With Vaadin, you get GWT (or its counterpart, Web Components) plus much more.


    Vaadin is a framework for building desktop-style web apps by writing pure Java code on the server-side including declaring a user-interface. That user-interface is rendered in a web browser by Vaadin automatically generating on-the-fly the necessary browser code: HTML, CSS, JavaScript, etc. Business logic executes only on the server-side. User events (buttons clicked, data typed into fields, etc.) on the web client trigger Java code to run on the server side.

    How that browser code is generated and executed, and how the client and server communicate, depends on 3rd party technology:

    • In Vaadin 8 and earlier, GWT
    • In Vaadin 10 and later, Web Components

    Vaadin 8 and earlier uses GWT

    Vaadin 8 and earlier was built on top of Google Web Toolkit (GWT). GWT has been spun-out of Google, as a fully open-sourced project: http://www.GWTProject.org/

    GWT cross-compiles Java code into standalone JavaScript files. GWT provides other important features such as support of UI components and client-server communications.

    The Vaadin Ltd company is a major supporter of GWT, including having hosted GWT developer conferences, and providing consulting expertise services.

    Vaadin is only one of many products built on GWT.

    Vaadin 10 and later uses Web Components

    Vaadin 10 and later, known as Vaadin Flow, is a major rewrite of the framework. Instead of using GWT underneath, Vaadin Flow is built on top of Web Components technology.

    Web Components is actually a suite of technologies including Custom Elements, Shadow DOM, and HTML Templates. These technologies are now built into most every modern web browser, and supported on many older browsers via polyfills.

    Writing a new widget component for Vaadin is much easier with Web Components than with GWT. And most any existing Web Components based component can be wrapped to provide access via Java from the Vaadin server-side framework.

    I don't have a source at hand to cite, but as I recall, Web Components based widgets may run faster and use less memory than their GWT-based equivalents.


    By the way, both generations of Vaadin depend on some other technology, such as the Atmosphere library for help with WebSocket and HTTP.

    0 讨论(0)
  • 2021-02-01 01:41

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

    0 讨论(0)
  • 2021-02-01 01:43

    GWT enables you to write web-clients with Java. The GWT cross-compiler creates JavaScript code for the client-side. You have to care for the server for your own as well as client-server communication. The generated client-code is already optimized for many browsers. My personal opinion is, GWT was very popular until Google focused on Angular. Today it is not much popular anymore.

    Vaadin provides two different solutions: 1) a UI widget-set based implementing the web-component standard, and 2) the Vaadin serverside Java framework. It allows you to write web-clients with Java. However, Vaadin generates the web-client through runtime on the server dynamically. Vaadin cares for the entire client-server communication. For rendering the UI, Vaadin until version 8 used a pre-compiled UI widget-set. Vaadin from version 10 uses the Vaadin web-components.

    Further benefits of Vaadin:

    • You do not get in contact with HTML and JavaScript and you need not bother for DOM manipulation, browser history and other low-level problems
    • The serverside architecture provides better security
    • Modern themes
    • Individual styling with CSS
    • RapidClipse provides a powerful UI builder for Vaadin based on Eclipse containing a Vaadin <> JPA databinding, internationalization, UI persistence, extended Hibernate tools, JPA-SQL query language and MicroStream integration for creating Java in-memory database apps and microservices
    0 讨论(0)
  • 2021-02-01 01:47

    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.

    0 讨论(0)
提交回复
热议问题