Hilla: Was kommt als Nächstes?

René Wilby | 13.08.2024 Min. Lesezeit

Vaadin, die Firma hinter dem Open Source Framework Hilla, steckt viel Zeit und Energie in die Weiterentwicklung von Hilla. Doch bevor wir uns anschauen, was wir von Hilla im weiteren Verlauf dieses Jahres noch erwarten können, lohnt es sich einen kurzen Blick auf das letzte Release zu werfen.

Ein Blick zurück auf Vaadin 24.4

Das Vaadin-Release 24.4 ist vielleicht eines der größten kleinen Releases, die Vaadin je veröffentlicht hat. Folgende Highlights waren unter anderem Bestandteil dieses Releases:

Ein Blick nach vorne

Eines der Dinge, die ich an Vaadin schätze, ist die Transparenz in der Entwicklung. Über die öffentlichen GitHub-Repos kann man nachvollziehen, an welchen Features das Team gerade arbeitet. Im Vaadin Forum werden regelmäßig neue Ideen für Weiterentwicklungen vorgestellt und Vaadin fragt dort aktiv nach Feedback zu neuen Produkten. Schauen wir also einmal, woran das Team von Vaadin gerade arbeitet und was wir in den nächsten Monaten an neuen Features für Hilla erwarten können.

i18n Unterstützung

Dieses Feature ist bereits im aktuelle 24.4 Release enthalten, verbirgt sich dort jedoch noch hinter einem Feature Flag. Das i18n-Feature ermöglicht es Entwicklerinnen und Entwicklern React-Komponenten in der UI ihrer Hilla-Anwendung mit verschiedenen Übersetzungen zu versehen. Die verfügbaren Übersetzungen werden in separaten Dateien verwaltet. Im UI-Code werden die Übersetzungen dann über eine translate-Funktion verwendet.

Das Feature-Flag kann über den neuen Vaadin Copilot oder mit Hilfe der Datei src/main/resources/vaadin-featureflags.properties und dem darin enthaltenen Wert

com.vaadin.experimental.hillaI18n=true 

aktiviert werden. Anschließend muss das Verzeichnis src/main/resources/vaadin-i18n mit mindestens einer Übersetzungsdatei, wie bspw. translations_en.properties oder translations_de.properties erstellt werden. Der Inhalt dieser Dateien sind einfache Schlüssel-Werte-Paare mit den Werten in der jeweiligen Sprache, bspw.

greeting-button=Say hello 

für die englische Übersetzung und

greeting-button=Sag hallo

für die deutsche Übersetzung. Innerhalb der Anwendung muss das i18n-Feature einmalig konfiguriert werden. Dies erfolgt durch den Aufruf der configure-Funktion, bspw. innerhalb der Datei src/main/frontend/views/@layout.tsx:

// import statements

await i18n.configure();

// regular content of @layout.tsx

In diesem Fall verwendet Hilla die im Browser konfigurierte Sprache als Standardsprache und versucht die zugehörigen Übersetzungen anhand der Übersetzungsdateien aus dem Backend zu laden. Alternativ, kann die bevorzugte Sprache beim Aufruf der configure-Funktion auch im gängigen Format (IETF BCP 47) mitgegeben werden, bspw. await i18n.configure({ language: 'en' }). Alle vorhandenen Übersetzungen können nun anhand des Schlüssels in der Übersetzungsdatei und mit Hilfe der translate-Funktion im UI-Code verwendet werden, wie bspw.:

    <Button onClick={() => {}}>
        {translate('greeting-button')}
    </Button> 

Die translate-Funktion liefert ein Signal zurück. Dies bedeutet, dass sich alle React-Komponenten, die diese Übersetzung verwenden, automatisch aktualisieren, wenn sich die Übersetzung ändert.

Die Verwaltung der Übersetzungen wird sich in Zukunft voraussichtlich weiter vereinfachen. Ein neues Produkt namens Control Center wird dafür vermutlich eigene Funktionen bereitstellen.

Full-Stack Signals

Mit dem 24.4 Release hat Vaadin die Nutzung von Signals in Hilla eingeführt und verwendet sie seit dem bspw. im i18n-Feature und für lokale Zuständen anstelle von useState, aber dies war erst der Anfang. Derzeit arbeitet das Team an einer Reihe von Features, die unter dem Begriff “Full-Stack Signals” zusammengefasst werden (Quelle: https://github.com/vaadin/hilla/discussions/1902). Die Idee dahinter ist, dass ein Zustand in Form eines Signals zwischen mehreren Anwenderinnen und Anwendern einer Anwendung geteilt werden kann. Ändert eine Anwenderin oder ein Anwender diesen geteilten Zustand, ist die Änderung auch für alle anderen Anwenderinnen und Anwender sichtbar. Dies schafft die Grundlage für viele tolle Funktionen kollaborativer Anwendungen. Der Zustand, der dabei über Signals verwaltet wird, existiert damit nicht mehr nur im Browser einer einzelnen Anwenderin bzw. eines einzelnen Anwenders. Der Zustand existiert im Browser beliebig vieler Anwenderinnen und Anwender und im Backend der Anwendung. Im nächsten 24.5 Release wird man eine erste Vorschau dieses neuen Features voraussichtlich mit Hilfe eine Feature-Flags ausprobieren können (Quelle: https://github.com/vaadin/hilla/issues/2430).

Signal-based view state management

Signals sind ein dominantes Thema in der Weiterentwicklung von Hilla. Ihre Verwendung für das i18n-Feature und als Full-Stack Signals sind aber noch längst nicht alles. Leif Åstrand hat im Vaadin Forum einen weiteren RFC vorgestellt, bei dem Signals eine wichtige Rolle spielen: https://vaadin.com/forum/t/rfc-signal-based-view-state-management/166848. Im Kern geht es bei diesem RFC um eine Reihe von Vereinfachungen, die Entwicklerinnen und Entwicklern die Arbeit erleichtern sollen, in dem weniger Code für wiederkehrende Aufgaben geschrieben werden muss. Dazu soll in bestimmten Fällen Code generiert werden, der dann direkt verwendet werden kann. Verwendet man bspw. das Datei-basierte Routing von Hilla und hat eine Datei wie bspw. views/employees/{employeeId}.tsx erstellt, so kann Hilla erkennen, dass es innerhalb dieser View einen lokalen Zustand employeeId geben wird, der als Signal über den generierten Hook useEmployeeViewState() verwendet werden kann. Ändert sich der Parameter in der URL, so ändert sich auch der lokale Zustand innerhalb der View automatisch und umgekehrt. Der RFC enthält weitere Vereinfachungen, wie bspw. für die Generierung von URLs oder für das Laden von Zustandsinformationen aus dem Backend. Ein Prototyp, der einen Teil dieser Vereinfachungen enthält, kann man sich in einem GitHub-Repo von Leif anschauen: https://github.com/Legioth/view-state.

Fazit

Hilla wird kontinuierlich weiterentwickelt. Vaadin hat sich langfristig zu Hilla als zweitem Framework neben Flow committed und das merkt man an vielen Stellen: Im letzten 24.4 Release war Hilla mit vielen neuen Features vertreten, Vaadin Copilot war zuerst für Hilla verfügbar und auch in Zukunft wird es viele spannende neue Features für Hilla geben, die die Entwicklung kollaborativer Web-Anwendungen auf Basis von React und Spring weiter vereinfachen werden.

Wer sich einen detaillierten Überblick über die Weiterentwicklung von Hilla und Flow und über kommende Features verschaffen möchte, kann dies auf der anstehenden Vaadin Create Konferenz vom 29.10. bis 30.10.2024 in Frankfurt tun. Die detaillierte Agenda und Tickets gibt es unter https://vaadin.com/vaadin-create.