Neues von }>

Vaadin 10 Beta verfügbar: Das bietet das neue Framework für Web & Java

Sven Ruppert

© Shutterstock / wacomka

 

Nach jahrelanger Arbeit ist es nun endlich soweit: Die Vaadin-Plattform der nächsten Generation steht in den Startlöchern. Vaadin 10 ist in einer Beta-Version erschienen. Doch bevor wir uns mit den Neuerungen im Framework beschäftigen, schauen wir uns erst einmal ein wenig den Hintergrund an.

Vaadin: Built for the modern mobile-first web

Heute gibt es drei wichtige Ziele für den Aufbau von UIs für Business-Apps: Web, Android und iOS. Zwar bieten native Android- und iOS-Apps heute wohl das ausgereifteste UX-System, doch hat sich das Web aufgrund verschiedener Eigenschaften als Hauptziel für die meisten Geschäftsanwendungen etabliert.

Derzeitig entstehen zwei aufregende Technologien, von denen wir (Vaadin) glauben, dass sie die Business-App-Landschaft verändern werden: Progressive Web Applications (PWA) und Web Components.

Mit PWA nähert sich die Benutzererfahrung des Webs den nativen Apps auf iOS und Android an. Mehr dazu hier auf JAXenter im Artikel: How-to: Progressive Web Apps praktisch erklärt.

Mit PWAs verschmelzen die nativen Apps und die Webapps in ihrem Verhalten, und der Benutzer kann immer weniger Unterschiede feststellen. Die Browser Chrome, Safari, Edge und Firefox bieten die dafür notwendigen Funktionen auf dem Desktop schon heute auf jedem Betriebssystem, auf dem sie ausgeführt werden.

Für Android ist PWA bereits heute Realität, und die restlichen Betriebssysteme sowie die Browser werden voraussichtlich noch in diesem Jahr von ihren Betaversionen in den Status final wechseln.

Wofür bis heute Frameworks benötigt worden sind, kommen nun Web Components ins Spiel. Web Components verändern das gesamte Ökosystem rund um die Web-Entwicklung, wenn man sich ansieht, wie bisher mit Komponenten gearbeitet wird. Ziel ist es, zwischen den verschiedenen Frameworks und Web-Plattformen kompatibel zu bleiben.

Alle Browser, die nach IE11 veröffentlicht wurden, unterstützen bereits die Ausführung von Web Components, wobei die gängigsten Browser durch native Implementierung optimiert werden. Vaadin hat die Vaadin-Plattform von Grund auf für dieses aufregende und moderne Web neu gestaltet. Mit dem Fokus auf Business-Anwendungen ist es das oberstes Ziel, das moderne Web einfach zu gestalten und gleichzeitig die lange Lebensdauer dieser Anwendungen zu unterstützen.

Für Web und Java

Bei der Entwicklung von Webanwendungen kann man den Fokus auf die Client- oder Serverseite legen. Je nachdem worauf hin die Webapp optimiert werden soll. Da es nicht die eine richtige Antwort gibt, wurde Vaadin 10 so konzipiert, dass die Entwicklungsplattform sowohl die clientseitigen als auch die serverseitigen Technologien unterstützt, um Anwendungsentwicklern bestmögliche Hilfestellung zu leisten.

Dies sollte nicht bedeuten, dass die Plattform so tun würde, als hätte jede Anwendung die gleiche Architektur oder die gleichen Bestandteile. Stattdessen stellt die Plattform Teile bereit, die gut zusammenarbeiten, aber unabhängig voneinander verwendet werden können. Die Entwickler wählen die gewünschten Komponenten selbst aus und können sie mit dem Rahmenwerk ihrer Wahl verwenden, egal ob mit Polymer, React, Angular, Vue oder auch gänzlich ohne Framework. Es besteht keine Notwendigkeit, Java überhaupt berühren zu müssen.

Auf der anderen Seite sind Java-Entwickler in der Lage, moderne mobile Single-Page-Anwendungen zu erstellen, ohne dazu gezwungen zu sein, JavaScript zu schreiben. Sie können die App vollständig in Java, Kotlin, Scala oder einer anderen Sprache entwickeln, die auf der JVM ausgeführt wird, und auf jedes serverseitige API zugreifen, ohne auf der Clientseite etwas erstellen zu müssen. Aufgrund dieser dualen Natur der Plattform können Teams ihre Kompetenzen nutzen und eine nahtlose Zusammenarbeit zwischen Web- und Java-Entwicklern aufbauen.

Hier ein Beispiel aus beiden Welten:

xml
<vaadin-date-picker
  label="Select birth date" 
  value="[[user.birthDate]]" 
  required>
</vaadin-date-picker>
java
DatePicker bd = new DatePicker(“Select birth date”);
bd.setValue(user.getBirthDate());
bd.setRequired(true);

Web Components Library

Vaadin 10 enthält 48 Web-Komponenten – von einem Lazy Loading Data Grid über Formelemente bis hin zu animierten Visualisierungen. Da die Qualität gegenüber Quantität priorisiert worden ist, wurde das Set an Komponenten eher für die meisten Geschäftsanwendungen ausgelegt.

Alle Komponenten sind so gebaut, dass sie auf kleinen mobilen Bildschirmen mit Touch genauso gut funktionieren wie auf dem Desktop.
Ebenfalls wurden diese Komponenten auf die Verwendung von Screen-Readern hin getestet.

Da jede Komponente als benutzerdefiniertes Element veröffentlicht wird, kann sie mit jedem Web-Framework verwendet werden, das Standard-Webkomponenten unterstützt. Auf die meisten Funktionen kann deklarativ aus HTML heraus zugegriffen werden, aber alles ist ebenfalls via JavaScript API verfügbar. Datenanbindung und Templates werden mit Polymer unterstützt.

Alle Komponenten lassen sich problemlos mit benutzerdefinierten CSS-Eigenschaften gestalten. Vaadin 10 enthält auch ein neues Theme namens Lumo, das standardmäßig verwendet wird und leicht anzupassen ist. Die Liste der verfügbaren Komponenten ist unter https://vaadin.com/elements zu finden.

Java-Entwickler

Das neue Vaadin Flow-Framework verbindet Web und Java auf der von Vaadin gewohnten Weise, indem es den vollständigen Zugriff auf Web-Komponenten von serverseitigem Java ermöglicht. Durch die Automatisierung der bidirektionalen Kommunikation zwischen dem Browser und dem Server können Java-Entwickler auch mit der neuen Version moderne einseitige Web-Apps schreiben.

Flow (ehemals Vaadin Framework) bietet eine einfach zu verwendende Abstraktion für den Aufbau der Benutzeroberfläche auf die gleiche Weise wie Vaadin 8, aber mit modernen mobilen Webkomponenten. Im Gegensatz zu früher gibt es nun ebenfalls einen vollständigen Zugriff auf die Webseite selbst.

  • Manipulation des DOM vom serverseitigen Java aus.
  • Aufruf aller clientseitigen Methoden vom Server aus.
  • Veröffentlichung von serverseitigen Methoden (mit starker Typisierung) auf der Clientseite
  • Wahlweise Erstellung neuer Komponenten in HTML
  • Möglichkeit der Verwendung verfügbarer Webkomponenten von Drittanbietern
  • Teilen von Live-Datenmodellen zwischen dem Server und dem Client
  • Binden von clientseitigen Teemplates an serverseitige Daten
  • Optionale clientseitige Logik zur Validierung oder Latenzkompensation

Kurz gesagt erhalten Entwickler die einfach zu bedienende Abstraktion, ohne den Zugriff auf Webplattformen einzuschränken.

Die Entwicklung der Benutzeroberfläche auf der Serverseite hat vier wesentliche Vorteile:

  1. Sie vereinfacht die Anwendungsstruktur, da keine REST-APIs veröffentlicht werden müssen oder überhaupt kein clientseitiger Code geschrieben werden muss.
  2. Standardmäßig läuft der Code auf der (geschützten) Serverseite anstelle in einem Browser.
  3. einfacher Zugriff auf ein reiches Java-Ökosystem.
  4. Verwendung einer beliebigen Sprache, die auf der JVM läuft.

Gleichzeitig hat die Serverseite ihre Einschränkungen:

  1. Es gibt keine Offline-Unterstützung
  2. Anwendungen verbrauchen mehr Server-Ressourcen.

In den meisten Fällen können Vaadin Flow-basierte Anwendungen auf handelsüblichen Servern tausende von gleichzeitig aktiven Benutzern bedienen. Da Vaadin 10 es zusätzlich ermöglicht, sowohl auf der Serverseite als auch auf der Clientseite mit genau denselben Komponenten zu entwickeln, können die Teile der Anwendung, bei denen diese Einschränkungen bisher die Verwendung von Vaadin-Flow verhindern, weiterhin mit den clientseitigen Teilen der Vaadin-Plattform erstellt werden.

Mit Vaadin 10 sind Vaadin WebApps nicht mehr von GWT abhängig. Es wurde die Entscheidung getroffen, Polymer für die Entwicklung aller Komponenten in Vaadin zu verwenden. Das Tooling, das aus der Welt von Vaadin 8 bekannt ist, wie zum Beispiel Testbench oder der Designer sind mit Vaadin 10 ebenfalls wieder mit dabei.

Longterm Support

Die Vaadin-Plattform besteht aus Web-Komponenten, Flow-Framework, Tools und App-Startern. Alle diese Teile wurden so konzipiert und getestet, dass sie zusammen funktionieren, aber so konstruiert, dass Entwickler nur die Teile auswählen können, die sie benötigen. Zum Beispiel kann ein Frontend-Team, das ein neues Feature für eine vorhandene Angular-basierte App erstellt, nur einige Komponenten von Vaadin verwenden, während ein Java-Team die meisten Teile nutzen kann.

Wir möchten den Benutzern der Vaadin-Plattform schnell neue Funktionen zur Verfügung stellen und gleichzeitig sicherstellen, dass diese gut zusammenarbeiten und es Unternehmen ermöglichen, ihre Anwendungen viele Jahre lang zu warten, ohne jedes Jahr die Plattform auf den neuesten Stand zu bringen. Um dies zu realisieren, planen wir, alle 3 Monate eine neue Plattformversion in einem vorhersehbaren Release-Zug zu veröffentlichen und eine Version alle 2 Jahre als Long Term Supported (LTS) anzubieten. Jede LTS-Version wird dann für 5 Jahre unterstützt. Vaadin 10 wird die erste LTS-Version sein. Während die Teile jeder Plattformversion getestet werden, um zusammen zu arbeiten, können Entwickler auch einige Teile aktualisieren, um Zugang zu neuen Funktionen zu erhalten, ohne dass die gesamte Plattform aktualisiert werden muss.

Wichtig zu wissen ist, dass sowohl Vaadin 7 als auch Vaadin 8 noch bis zum Jahr 2019 bzw. 2022 unterstützt werden. Heute ist Vaadin 8 die stabilste und funktionsreichste Version und für viele Anwendungen die beste Wahl.

Beta != production stable

Die gerade veröffentlichte Version von Vaadin 10 (beta) gibt einen Ausblick auf das, was uns in der finalen Version erwartet. Jeder ist herzlich eingeladen, die Beta-Version  zu testen. Wir bitten ausdrücklich darum, Fehler zu melden – am besten, indem ein entsprechendes Ticket im GitHub Repository erstellt wird. Wir arbeiten mit Hochdruck an Vaadin 10, und jeder gemeldete Fehler hilft dabei, noch zügiger die Beta-Phase zu verlassen.

Auf JAXenter startet demnächst eine Serie zu Vaadin 10, in der viele der Aspekte einer Migration von V8 zu V10, von Desktop zu V10 und natürlich auch der Start von neuen Projekten mit Vaadin 10 beleuchtet werden.

Happy Coding!

Geschrieben von
Sven Ruppert
Sven Ruppert
Sven Ruppert arbeitet seit 1996 mit Java und ist Developer Advocate bei Vaadin. In seiner Freizeit spricht er auf internationalen und nationalen Konferenzen, schreibt für IT-Magazine und für Tech-Portale. Twitter: @SvenRuppert
Kommentare
  1. Dr. Eck-Spatz2018-03-06 20:04:07

    Werte Redaktion,

    bitte in Zukunft Werbung auch als solche kennzeichnen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.