On the face of it, Vaadin—and GWT in general—has a lot in common with DukeScript. Both are focused on providing browser-oriented solutions for Java developers and have good integration with IDEs, thanks to their native support for Maven. However, these aspects are really all that they have in common. From the programming model, to how the frameworks process the code, to how applications are deployed, Vaadin and DukeScript are totally different.
To really drive these points home, let’s start by looking at the programming models of Vaadin and DukeScript. Though the way in which you program in Java is markedly different, each has a really good motivation that makes perfect sense for the applicable target developer audience. In that sense, there is no “better” or “worse” in this story, there’s simply two different ways of enabling Java developers to have access to browser-based platforms on all kinds of devices.
In Vaadin, a major demographic in terms of developer audience is Java Swing developers who want to move their Java desktop business applications to the web and to mobile devices. For this reason, Vaadin provides a component model comparable to that of Swing. A range of GUI components, such as “Label” and “Button” are provided, as well as heaps of more complex components, including a variety of graphs and other impressive UI-related features, together with “Layouts” and “Events”, which again is reminiscent of Swing.