# Vaadin

Vaadin ist ein freies Webframework für Rich Internet Application (RIA) unter der Apache-Lizenz 2.0. Im Gegensatz zu JavaScript-Bibliotheken und auf Browser-Plugins basierenden Lösungen bietet es eine serverseitige Architektur, was bedeutet, dass der Großteil der Programmlogik auf dem Server läuft. Auf der Client-Seite baut Vaadin ab Version 10 auf Web Components auf, zuvor basierte es auf dem Ajax-Framework Google Web Toolkit. Es kann mit eigenen Komponenten erweitert werden. Vaadin wird hauptsächlich von der Firma Vaadin Ltd. (ehemals IT Mill) aus Turku entwickelt.

## Merkmale

Eines der Hauptmerkmale von Vaadin ist, dass der Softwareentwickler die gesamte Anwendung in Java schreiben kann. Das Framework umfasst ereignisgesteuerte Programmierung sowie Steuerelemente, die das Programmiermodell näher an die Modelle üblicher GUI-Software bringt als bei traditioneller Webentwicklung mit HTML und JavaScript.
Vaadin benutzte bis Version 10 Google Web Toolkit (GWT) zum Darstellen von Webseiten, ab dieser Version setzt es mit dem neuen Teilframework „Flow“ auf WebComponents auf. Es fügt allen Aktionen eine serverseitige Datenvalidierung hinzu, wodurch der Server über möglicherweise manipulierte Client-Daten informiert und diese Veränderungen unterbindet. Vaadins Standardkomponenten können mit eigenen Steuerelementen erweitert werden, für die Themes mit CSS erstellt werden können.

## Erweiterungen und Werkzeuge

Neben den OpenSource-Erweiterungen von Vaadin vermarktet Vaadin Ltd. auch kommerzielle Erweiterungen:

### Vaadin TouchKit

    Eine Erweiterung für Vaadin Applikationen, die in mobilen Endgeräten wie native Applikationen wirken. Die Applikationen laufen mit HTML5, JavaScript und CSS auf dem Endgerät im Vollbildmodus des Browsers. Mit den Möglichkeiten von HTML5 und den Apache Cordova APIs können Beschleunigungssensor, Kamera, Kompass und Geolokation verwendet werden. TouchKit ist ab Vaadin-Version 10 nicht mehr verfügbar.

### Vaadin TestBench

    Vaadin TestBench ist ein auf Selenium2 aufbauendes Werkzeug für die Erstellung automatisierter Oberflächentests. Mit einem Recorder nimmt man Testfälle auf. Diese werden als JUnit Tests abgelegt und verändert. Die Tests können lokal oder remote laufen. Die Testergebnisse werden in Dateien gespeichert.

### Vaadin Charts

    Bibliothek visueller Komponenten zur Darstellung animierter und interaktiver Diagramme in Vaadin Applikationen.

## Geschichte

Die Entwicklung begann zunächst als Adapter, aufbauend auf dem quelloffenen Web-Framework Millstone 3, das im Jahr 2002 freigegeben wurde. Es führte eine ajaxbasierte Client-Kommunikation und Renderengine ein. Im Jahr 2006 wurde dieses Konzept separat als kommerzielles Produkt entwickelt. Dadurch sind große Teile der serverseitigen Vaadin-API noch immer mit den swingähnlichen APIs von Millstone kompatibel.
Anfang 2007 wurde der Produktname zu IT Mill Toolkit geändert und Version 4 freigegeben. Es benutzte eine proprietäre Ajax-Implementation für die Darstellung auf der Client-Seite, was es kompliziert machte, neue Widgets zu implementieren. Ende 2007 wurde die proprietäre Implementierung auf der Client-Seite aufgegeben. Stattdessen wurde das Google Web Toolkit integriert, um die clientseitigen Komponenten darzustellen. Zur gleichen Zeit wurde die Produktlizenz in die Version 2.0 der freien Apache-Lizenz geändert. Die erste Veröffentlichung einer produktionsfähigen Version von IT Mill Toolkit 5 erfolgte am 4. März 2009 nach einer mehr als ein Jahr andauernden Beta-Periode.
Am 11. September 2008 wurde öffentlich angekündigt, dass Michael Widenius, der Hauptentwickler der originalen Version von MySQL, eine nicht genannte Summe in das Unternehmen IT Mill investierte, welches das Toolkit entwickelte. Am 20. Mai 2009 wurde das IT Mill Toolkit in Vaadin umbenannt; der Name stammt vom finnischen Wort für ein weibliches Rentier, das auch als „Ich beharre“ übersetzt werden kann. Zusätzlich zur Namensänderung wurde zusammen mit der Community eine Vorabfreigabe von Version 6 getätigt.
Am 30. März 2010 wurde Vaadin Directory geöffnet, ein Portal für die Verbreitung von kommerziellen und Open-Source-Erweiterungen für Vaadin. Die kommerziellen und freien Erweiterungen des Vaadin-Teams werden seit damals ebenfalls über das Vaadin Directory vertrieben. Seit 25. Februar 2011 gibt es ein kommerzielles Supportmodell, die sogenannten Vaadin Pro Accounts.
Am 4. März 2013 wurde Vaadin 7, die erste Hauptversion seit der Umbenennung in Vaadin 2009, veröffentlicht.
Am 25. Juni 2018 wurde Version 10 veröffentlicht, mit der die Umstellung von GWT zu Web Components als zentrale Client-Technologie erfolgte.

### Releasefrequenz, Support und Abwärtskompatibilität

Seit Vaadin 23.0 im März 2022 gibt es alle 3 Monate eine neue Release. Minor Releases werden nur 6 Monate (also bis zum Erscheinen der übernächsten Release) gewartet. Long Term Support (LTS) Releases werden im Falle von nicht abwärtskompatiblen Änderungen veröffentlicht. Diese werden bis 1 Jahr nach dem Erscheinen der nächsten LTS Release gewartet. Vaadin Ltd. bietet kommerziellen Support für LTS Releases bis zu 15 Jahre an.
Für kommerzielle Kunden leistet Vaadin Gewähr für das Beheben aller erkannter Fehler in allen aktuell unterstützten Versionen.

## Konkurrenz

Historisch wurde Vaadin mit den Frameworks wingS, Echo/Echo2 und ThinWire verglichen, die ein ähnliches, serverseitiges Programmiermodell benutzen. Die serverseitigen APIs sind ziemlich ähnlich, jedoch unterscheiden sich die clientseitigen Interaktionen (z. B. im Webbrowser) bis Version 10 darin, dass Vaadin in Java programmierte GWT-Widgets benutzt, im Gegensatz zu den in JavaScript implementierten Komponenten von Echo und Thinwire. Ab Version 10 ist dieser Unterschied geringer, da Vaadin nun auch (via WebComponents) in JavaScript implementierte Komponenten verwendet.
Die am meisten zu Vergleichen herangezogenen Frameworks waren früher Remote Application Platform (RAP), Apache Flex, Google Web Toolkit, Apache Wicket und ICEfaces – heute sind es die JavaScript-Frameworks React, Angular und Vue.js. Auf der Website von Vaadin findet man eine diesbezügliche Vergleichsmatrix.
PhoneGap, ein ebenfalls auf Apache Cordova basierendes Framework, kann als Konkurrenz zu Vaadin TouchKit angesehen werden. Allerdings beruht PhoneGap in der Programmierung auf HTML5, CSS3 und JavaScript.
Seit 2007 gibt es im deutschsprachigen Raum das freie Webframework CaptainCasa Enterprise Client, welches ebenfalls die serverseitige Implementierung von Webseiten ausschließlich mittels Java-Programmierung unterstützt. Implementierungs-Logik und Design sind bei CaptainCasa klar abgegrenzt. Es ist keinerlei JavaScript auf Client-Seite notwendig. Die eventgesteuerte Bearbeitung und die umfangreiche Komponenten-Bibliothek stellen ein vergleichbares Prinzip zu Vaadin dar.
Seit 2019 verfolgt Microsoft in ASP.NET Core V3 mit Server-side Blazor ein vergleichbares Prinzip, das die Entwicklung interaktiver Weboberflächen mit C# (ohne notwendige JavaScript-Programmierung) unterstützt. Daneben gibt es seit Mai 2019 auch die Variante Blazor Webassembly, bei der die Weboberfläche und C# Code mit Hilfe von WebAssembly direkt im Browser ausgeführt wird.