Wartbare Webanwendungen in reinem Java

Rich Web Applications mit Errai

Christian Sadilek


Zu Beginn sollte die kritische Frage gestellt werden, ob das Java-Ökosystem überhaupt ein weiteres Webframework verträgt. Der Sättigungspunkt dafür ist vermutlich längst erreicht. Es ist daher wichtig festzuhalten, dass Errai kein Webframework im traditionellen Sinn ist. In Errai wird der Webbrowser nicht als individuelle Einheit zur Darstellung der Benutzerschnittstelle gesehen, sondern als Laufzeitumgebung für Anwendungslogik. In den letzten Jahren konnte man einen Rückgang von Kompatibilitätsproblemen und eine stetige Verbesserung der JavaScript-Ausführungsgeschwindigkeit in allen gängigen Webbrowsern beobachten. Errai macht sich diese Tatsache zunutze und bringt etablierte serverseitige Java-Programmiermodelle in die Cliententwicklung. Dabei soll nicht Java im Webbrowser ausgeführt, sondern es sollen ausgewählte Teile der Anwendung als JavaScript am Client verfügbar gemacht werden. Errai nutzt dafür den Java-nach-JavaScript-Compiler des Google Web Toolkits (GWT) [1].

Der Vorteil dieses Ansatzes ist, dass es nun fast keine Rolle mehr spielt, ob Quellcode für den Server oder den Client entwickelt wird. Serverseitige Klassen können am Client wiederverwendet werden und umgekehrt. Ein gutes Beispiel dafür sind Klassen des Geschäftsmodells inklusive Validierungslogik. In den folgenden Abschnitten werden die zentralen Features des Errai-Frameworks näher erläutert und die Vorteile genauer herausgearbeitet.

CDI im Webbrowser

Context and Dependency Injection (CDI) ist ein Java-EE-Standard (JSR-299), der unter anderem Dependency Injection, typsicheren Nachrichtenaustausch und den Lebenszyklus von Komponenten beschreibt [2]. Errai ermöglicht die Verwendung eines ständig wachsenden Teils dieser Spezifikation in clientseitigem Code. In den Listings 1 bis 3 ist ein Beispiel zu sehen, in dem Nachrichten (Events) zwischen Client und Server ausgetauscht werden, um die Registrierung neuer User in einem simplen Chatroom zu kommunizieren. Listing 1 zeigt die clientseitige ChatRegistrationView, in die ein Event für den Typ Registration injected wird. In Reaktion auf ein ClickEvent wird dieses applikationsspezifische Event gefeuert. Errai CDI ermöglicht nun, dass Events transparent zwischen Client und Server ausgetauscht werden können. Das registrationEvent aus Listing 1 kann somit sowohl am Client als auch am Server empfangen werden. In unserem Beispiel wird die serverseitige Observer-Methode onNewSubscription im ChatRegistrationService benachrichtigt (Listing 2), die ihre...

Wartbare Webanwendungen in reinem Java

Rich Web Applications mit Errai

Christian Sadilek


Zu Beginn sollte die kritische Frage gestellt werden, ob das Java-Ökosystem überhaupt ein weiteres Webframework verträgt. Der Sättigungspunkt dafür ist vermutlich längst erreicht. Es ist daher wichtig festzuhalten, dass Errai kein Webframework im traditionellen Sinn ist. In Errai wird der Webbrowser nicht als individuelle Einheit zur Darstellung der Benutzerschnittstelle gesehen, sondern als Laufzeitumgebung für Anwendungslogik. In den letzten Jahren konnte man einen Rückgang von Kompatibilitätsproblemen und eine stetige Verbesserung der JavaScript-Ausführungsgeschwindigkeit in allen gängigen Webbrowsern beobachten. Errai macht sich diese Tatsache zunutze und bringt etablierte serverseitige Java-Programmiermodelle in die Cliententwicklung. Dabei soll nicht Java im Webbrowser ausgeführt, sondern es sollen ausgewählte Teile der Anwendung als JavaScript am Client verfügbar gemacht werden. Errai nutzt dafür den Java-nach-JavaScript-Compiler des Google Web Toolkits (GWT) [1].

Der Vorteil dieses Ansatzes ist, dass es nun fast keine Rolle mehr spielt, ob Quellcode für den Server oder den Client entwickelt wird. Serverseitige Klassen können am Client wiederverwendet werden und umgekehrt. Ein gutes Beispiel dafür sind Klassen des Geschäftsmodells inklusive Validierungslogik. In den folgenden Abschnitten werden die zentralen Features des Errai-Frameworks näher erläutert und die Vorteile genauer herausgearbeitet.

CDI im Webbrowser

Context and Dependency Injection (CDI) ist ein Java-EE-Standard (JSR-299), der unter anderem Dependency Injection, typsicheren Nachrichtenaustausch und den Lebenszyklus von Komponenten beschreibt [2]. Errai ermöglicht die Verwendung eines ständig wachsenden Teils dieser Spezifikation in clientseitigem Code. In den Listings 1 bis 3 ist ein Beispiel zu sehen, in dem Nachrichten (Events) zwischen Client und Server ausgetauscht werden, um die Registrierung neuer User in einem simplen Chatroom zu kommunizieren. Listing 1 zeigt die clientseitige ChatRegistrationView, in die ein Event für den Typ Registration injected wird. In Reaktion auf ein ClickEvent wird dieses applikationsspezifische Event gefeuert. Errai CDI ermöglicht nun, dass Events transparent zwischen Client und Server ausgetauscht werden können. Das registrationEvent aus Listing 1 kann somit sowohl am Client als auch am Server empfangen werden. In unserem Beispiel wird die serverseitige Observer-Methode onNewSubscription im ChatRegistrationService benachrichtigt (Listing 2), die ihre...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang