Vaadin Explained

Vaadin
Logo Size:200px
Logo Alt:Vaadin-logo
Developer:Vaadin Ltd.
Programming Language:Java, JavaScript
Platform:Cross platform
Genre:Web framework
License:Apache License 2.0

Vaadin (in Finnish pronounced as /ˈʋɑːdin/) is an open-source web application development platform for Java. Vaadin includes a set of Web Components, a Java web framework, and a set of tools that enable developers to implement modern web graphical user interfaces (GUI) using the Java programming language only (instead of HTML and JavaScript), TypeScript only, or a combination of both.

History

Development was first started as an adapter on top of the Millstone 3 open-source web framework released in the year 2002. It introduced an Ajax-based client communication and rendering engine. During 2006 this concept was then developed separately as a commercial product. As a consequence of this, a large part of Vaadin's server-side API is still compatible with Millstone's Swing-like APIs.

In early 2007 the product name was changed to IT Mill Toolkit and version 4 was released. It used a proprietary JavaScript Ajax-implementation for the client-side rendering, which made it rather complicated to implement new widgets. By the end of the year 2007 the proprietary client-side implementation was abandoned and GWT was integrated on top of the server-side components. At the same time, the product license was changed to the open source Apache License 2.0. The first production-ready release of IT Mill Toolkit 5 was made on March 4, 2009, after an over one year beta period.

On September 11, 2008, it was publicly announced[1] [2] that Michael Widenius–the main author of the original version of MySQL–invested in IT Mill, the Finnish developer of Vaadin.[3] The size of the investment is undisclosed.

On May 20, 2009, IT Mill Toolkit changed its name to Vaadin Framework. The name originates from the Finnish word for doe, more precisely put, a female reindeer. It can also be translated from Finnish as "I insist". In addition to the name change, a pre-release of version 6 along with a community website was launched. Later, IT Mill Ltd, the company behind the open source Vaadin Framework, changed its name to Vaadin Ltd.

On March 30, 2010, Vaadin Directory was opened. It added a channel for distributing add-on components to the core Vaadin Framework, both for free or commercially. On launch date, there were 95 add-ons already available for download.[4]

Release history!LTS Version!Release date!Notes and new features since the previous LTS version launch
620 May 2009Initial release
73 February 2013
821 February 2017Improvements include a re-written data binding API that uses modern Java features such as type parameters and lambda expressions, and more efficient memory and CPU usage.[5]
1025 June 2018It's possible to use Vaadin's UI components from any technology compatible with Web Components. Vaadin Directory adds Web Components distribution. Vaadin Flow—the next generation of Vaadin Framework—was presented as a server-side Java web framework on top of Vaadin's UI components.[6]
1414 August 2019New UI components, CDI and OSGi support, Gradle integration, dynamic registration of routes, keyboard shortcuts API, support for npm and Bower.[7]
231 March 2022New release model.[8] New UI components, reworked design system, feature flags, npm is now the default package manager.[9]

Vaadin Flow (Java API)

Vaadin Flow (formerly Vaadin Framework) is a Java web framework for building web applications and websites. Vaadin Flow's programming model allows developers to use Java as the programming language for implementing User Interfaces (UIs) without having to directly use HTML or JavaScript. Vaadin Flow features a server-side architecture which means that most of the UI logic runs securely on the server reducing the exposure to attackers. On the client-side, Vaadin Flow is built on top of Web Component standards. The client/server communication is automatically handled through WebSocket or HTTP with light JSON messages that update both, the UI in the browser and the UI state in the server.

Vaadin Flow's Java API includes classes such as TextField, Button, ComboBox, Grid, and many others that can be configured, styled, and added into layout objects instances of classes such as VerticalLayout, HorizontalLayout, SplitLayout, and others. Behaviour is implemented by adding listeners to events such as clicks, input value changes, and others. Views are created by custom Java classes that implement another UI component (custom or provided by the framework). This view classes are annotated with @Route to expose them to the browser with a specific URL. The following example illustrates these concepts: @Route("hello-world") // exposes the view through http://localhost:8080/hello-worldpublic class MainView extends VerticalLayout The following is a screenshot of the previous example:

Hilla (TypeScript API)

Hilla (formerly Vaadin Fusion) is a web framework that integrates Spring Boot Java backends with reactive front ends implemented in TypeScript. This combination offers a fully type-safe development platform by combining server-side business logic in Java and type-safety in the client side with the TypeScript programming language. Views are implemented using Lit—a lightweight library for creating Web Components. The following is an example of a basic view implemented with Hilla:@customElement('hello-world-view')export class HelloWorldView extends LitElement

Vaadin's UI components

Vaadin includes a set of User Interface (UI) components implemented as Web Components. These components include a server-side Java API (Vaadin Flow) but can also be used directly in HTML documents as well. Vaadin's UI components work with mouse and touch events, can be customized with CSS, are compatible with WAI-ARIA, include keyboard and screen readers support, and support right-to-left languages.

The following table shows a list of the UI components included in Vaadin:

Vaadin components!Java class!HTML element name!Description!License
Accordionvaadin-accordionA vertically stacked set of expandable panelsApache 2.0
AnchoraAllows navigation to a given URLApache 2.0
AppLayoutvaadin-app-layoutA common application layout structureApache 2.0
Avatarvaadin-avatarA graphical representation of a personApache 2.0
(not available)vaadin-badgeA coloured text element for labelling contentApache 2.0
Boardvaadin-board-rowLayout component for building responsive viewsCommercial
Buttonvaadin-buttonAllows users to perform actionsApache 2.0
Crudvaadin-crudA component to manage Create, Read, Update, and Delete operationsCommercial
Chartvaadin-chartInteractive charts with different types such as bar, pie, line, and others Commercial
Checkboxvaadin-checkboxAn input field representing a binary choiceApache 2.0
Combo boxvaadin-combo-boxShows a list of items that can be filteredApache 2.0
ConfirmDialogvaadin-confirm-dialogA modal Dialog used to confirm user actionsApache 2.0
ContextMenuvaadin-context-menuA menu that appears on right-click or long touch pressApache 2.0
CookieConsentvaadin-cookie-consentA banner that to comply with privacy laws such as GDPR and CCPACommercial
CustomFieldvaadin-custom-fieldA component for wrapping multiple components as a single fieldApache 2.0
DatePickervaadin-date-pickerAllows to enter a date by typing or by selecting from a calendar overlayApache 2.0
DateTimePickervaadin-date-time-pickerAn input field for selecting both a date and a timeApache 2.0
Detailsvaadin-detailsAn expandable panel for showing and hiding contentApache 2.0
Dialogvaadin-dialogA popup window to show other components in an overlayApache 2.0
EmailFieldvaadin-email-fieldA text field that only accepts email addresses as inputApache 2.0
Form layoutvaadin-form-layoutA layout for building responsive forms with multiple columnsApache 2.0
Gridvaadin-gridData grid or data table component for tabular dataApache 2.0
GridProvaadin-grid-proProvides inline editing with full keyboard navigationCommercial
HorizontalLayoutvaadin-horizontal-layoutPlaces components side-by-side in a rowApache 2.0
Iconiron-iconShows a custom icon or from a collection of 600+ icons (VaadinIcons enum) Apache 2.0
ImageimgShows an image from a resource file or from binary data generated at runtimeApache 2.0
ListBoxvaadin-list-boxAllows to select one or more values from a scrollable list of itemsApache 2.0
LoginFormvaadin-login-formA component that contains a login formApache 2.0
LoginOverlayvaadin-login-overlayA modal or full-screen login formApache 2.0
MenuBarvaadin-menu-barA horizontal button bar with hierarchical drop-down menusApache 2.0
MessageListvaadin-message-listA component for displaying messages and building chats and comment sectionsApache 2.0
Notificationvaadin-notificationOverlay component used to provide feedback to the userApache 2.0
NumberFieldvaadin-number-fieldA text field that only accepts numeric input (decimal, integral, or big decimal)Apache 2.0
PasswordFieldvaadin-password-fieldAn input field for entering passwords masked by defaultApache 2.0
ProgressBarvaadin-progress-barShows the completion status of a task or processApache 2.0
Radio buttonvaadin-radio-buttonAllows to select exactly one value from a list of related but mutually exclusive optionsApache 2.0
RichTextEditorvaadin-rich-text-editorAn input field for entering rich textCommercial
Scrollervaadin-scrollerA component container for creating scrollable areas in the UIApache 2.0
Selectvaadin-selectAn input field component for choosing a single value from a set of optionsApache 2.0
SplitLayoutvaadin-split-layoutA component with two content areas and a draggable split handle between themApache 2.0
Tabsvaadin-tabsOrganize and group content into sectionsApache 2.0
TextAreavaadin-text-areaAn input field component for multi-line text inputApache 2.0
TextFieldvaadin-text-fieldA component for introducing and editing textApache 2.0
TimePickervaadin-time-pickerAn input field for entering or selecting a specific timeApache 2.0
TreeGridvaadin-gridA component for displaying hierarchical tabular data grouped into expandable and collapsible nodesApache 2.0
Uploadvaadin-uploadA component for uploading one or more files with upload progress and statusApache 2.0
VerticalLayoutvaadin-vertical-layoutPlaces components top-to-bottom in a columnApache 2.0

Certifications

Vaadin offers two certification tracks to prove that a developer is proficient with Vaadin Flow:[10]

To pass the certification, a developer should go through the documentation, follow the training videos, and take an online test.

Previous (now unavailable) certifications included:

See also

Further reading

External links

Notes and References

  1. Web site: Michael "Monty" Widenius investing in Finnish IT Mill. Invest in Finland. 2009-01-31. https://web.archive.org/web/20110720185127/http://www.investinfinland.fi/news/2008/en_GB/ITMill/. 2011-07-20. dead.
  2. Web site: Monty Widenius invests in Act II: IT Mill. https://web.archive.org/web/20160311195756/http://www.cnet.com/news/monty-widenius-invests-in-act-ii-it-mill/. dead. 2016-03-11. Asay. Matt. CNET News. 2009-01-31.
  3. Web site: IT Mill, avointa Ajaxia Suomesta . Sani . Ilari . 10 March 2009 . . . fi . 11 July 2024.
  4. Web site: Vaadin Directory Opens its Doors. 2021-09-07. vaadin.com. en.
  5. Vaadin. Vaadin releases Vaadin Framework 8. www.prnewswire.com.
  6. Web site: Vaadin. Vaadin modernizes Java development with its biggest release to date: Vaadin 10. www.businessinsider.com.
  7. Web site: Vaadin 14.0.0 release on GitHub. .
  8. Web site: A simpler release model Vaadin . 2022-08-11 . vaadin.com . en.
  9. Web site: Vaadin 23 is finally here! Vaadin . 2022-08-11 . vaadin.com . en.
  10. Web site: Training. 2021-09-08. Vaadin. en.