Agon Newsletter 01 / 2015.

Zurück

Agon Code Camp zum Java Framework Vaadin

Vaadin ist ein Framework zum Erstellen von User Interfaces (UI)  für Java Web-Anwendungen. Beim Design der API wurde viel Wert auf die intuitive Verwendbarkeit gelegt. Dadurch kann relativ einfach eine leicht wartbare Anwendung erstellt werden, die höchsten Benutzer- und Sicherheitsansprüchen genügt.

Vaadin eignet sich sehr gut für Anwendungen mit einem überschaubaren Kreis von einigen tausend Nutzern. Gmail, Twitter oder Facebook sollte man damit aber besser nicht nachbauen.

Vaadin ist ein RentierVaadin (finnisches Wort für ein weibliches Rentier) gibt es unter diesem Namen bereits seit 2009. Die Anfänge gehen bis ins Jahr 2000 zurück. Vaadin war in der Agon Solutions in den letzten Jahren immer mal wieder ein Thema. Den Anstoß sich näher mit Vaadin zu beschäftigen, lieferte ein Projekt in 2014 bei einer deutschen Versicherung. Dort wurde Vaadin im Rahmen eines Liferay Projekts eingesetzt.

Vaadin kapselt die Komplexität einer Web-Anwendung so geschickt weg, dass man sich bei der Entwicklung ganz auf das UI und die Businesslogik konzentrieren kann. Die Entwicklung erfolgt in der Regel komplett in Java. Bei Bedarf kann man aber auch eigenes JavaScript nutzen.

Vaadin kommt von Haus aus mit einer reichhaltigen Bibliothek an UI-Komponenten. Zusätzlich gibt es eine große Community, die weitere UI-Komponenten (teilweise kostenpflichtig) zur Verfügung stellt. Man kann natürlich auch eigene UI-Komponenten nach Belieben erstellen.

Zur Darstellung nutzt Vaadin das Google Web Toolkit (GWT). Die komplette Businesslogik befindet sich jedoch auf dem Server. Das ist der fundamentale Unterschied zur Verwendung von GWT in seiner reinen Form.

Mit GWT wird üblicherweise (wie in Vaadin) die Businesslogik serverseitig entwickelt. GWT übersetzt den serverseitigen Code (z.B. Java) in JavaScript. Die Logik läuft damit auf dem Client im Browser. Dieser Ansatz skaliert natürlich besonders gut. Der Server hat nach dem initialen Request nur noch was zu tun, wenn neue Daten aus dem Backend gelesen werden oder Daten im Backend persistiert werden sollen. Der große Nachteil ist jedoch, dass die Businesslogik als JavaScript auf dem Client vorliegt und daher vom Nutzer eingesehen und ggfl. sogar verändert werden kann.

Vaadin nutzt einen anderen Ansatz. Die Businesslogik bleibt auf dem Server. Sie ist dort sicher verwahrt, kann vom Nutzer nicht eingesehen und auch nicht verändert werden. Die Tatsache, dass die Businesslogik auf dem Server liegt führt dazu, dass jede im UI durchgeführte Aktion einen Serverrequest auslöst. Vaadin Anwendungen skalieren daher nicht so gut wie GWT Anwendungen. 10.000 User sollten aber kein Problem sein, wie der von Vaadin durchgeführte Lasttest zeigt.

Vaadin eignet sich prinzipiell besser für Anwendungen, bei denen man den Nutzerkreis überschauen kann, z.B. Intranetanwendungen und Internetanwendungen, die nicht für „die ganze Welt" gedacht sind. Von Joonas Lethinen, dem CEO von Vaadin, ist dazu das Zitat überliefert: „Wenn man das nächste Gmail entwickeln will, möchte man das nicht mit Vaadin tun."

Wie in diesem Artikel aufgeführt, haben wir uns im Agon Code Camp zuerst mit den Grundlagen von Vaadin beschäftigt. Nach einer kurzen Vorstellung der wichtigsten UI-Elemente ging es direkt ans Eingemachte und es wurden Masken gebaut. Dabei zeigte sich sehr schnell wie einfach und intuitiv optisch ansprechende Masken mit Vaadin erstellt werden können. Die Entwicklung ist ähnlich der von AWT und Swing. Entwickler mit Erfahrungen in diesen Bereichen werden in Vaadin viele Aspekte wiedererkennen. Bei der Entwicklung hat man wirklich das Gefühl man würde eine Rich-Client-Anwendung entwickeln. Vom Web ist nichts zu sehen. Es sein denn man will es. Mit dem Book of Vaadin gibt es zudem ein sehr gutes Nachschlagewerk. Auch das Javadoc der API hilft an vielen Stellen weiter.

Die Teilnehmer hatten keine größeren Vorkenntnisse von Vaadin. Manche haben sich auch in dem Agon Code Camp zum ersten Mal mit Vaadin beschäftigt. Trotzdem war jeder nach der kurzen Vorstellung in der Lage Masken zu erstellen, auf denen Felder durch Buttonklicks ein- bzw.  ausgeblendet oder Felder automatisch in Abhängigkeit zu anderen Feldern befüllt werden. Auch das Erstellen einer Tabelle in der man durch Doppelklick einen Datensatz für die Bearbeitung auswählen kann, war kein großes Problem. Dass die Tabelle durch eine CSV-Datei befüllt wurde, die auf der Maske per Fileupload hochgeladen werden konnte, kam als kleines Schmankerl noch dazu.

Das Agon Code Camp beschäftigte sich hauptsächlich mit den UI-Elementen, die Vaadin mit sich bringt. Themen wie Databinding oder das Stylen der Anwendung über CSS bzw. Sass (SCSS) wurden nur gestreift. Nachdem das erste Agon Code Camp bei den Teilnehmern sehr gut ankam, könnten die oben genannten Themen Ansätze für ein weiteres Camp in 2015 sein.