Struts, Spring MVC, JavaServer Faces, Vaadin

Was Java-Web-Frameworks leisten

18.08.2014
Von   
Bernhard Steppan arbeitet als IT-Chefarchitekt bei DB Systel GmbH (Deutsche Bahn) in Frankfurt am Main. Er hat 100+ Artikel und zahlreiche Bücher über C++ und Java verfasst. Er betreibt mehrere Blogs, unter anderem http://steppan.net, http://artouro.org und http://tourbine.com

Struts

Apache Struts war eines der ersten Java-Web-Frameworks. Die erste Generation des Struts-Frameworks wurde schon kurz nach der Einführung der JavaServer Pages Mitte 2000 vorgestellt und war über lange Jahre der Quasistandard für Java-Web-Frameworks schlechthin. Im Jahr 2007 erschien die zweite Generation von Struts. Struts 2 ist eine Abspaltung von Struts 1 und aus dem Java-Web-Framework WebWork entstanden. Struts 1 wird nicht mehr länger unterstützt (siehe Press-Release). Aktuell gibt es die Version 2.3 des von der Apache Software Foundation gehosteten Frameworks. Es steht unter der Apache Lizenz 2.0 und kann somit bedenkenlos auch für kommerzielle Anwendungen eingesetzt werden.

Foto: Tutorialspoint.com

Struts 2 gehört zu den Frameworks, die auf einer MVC-Architektur aufbauen (siehe Abbildung). Das Model einer Struts-Web-Anwendung beinhaltet wie üblich die Geschäftslogik und die zur Anzeige benötigten Daten. Bei Struts bezeichnet man diese Teile als Action-Klassen. Den Part der Views übernehmen JavaServer Pages. Sie bestehen aus HTML-Code, der mittels einer Struts-Tag-Library um spezifische Tags zum Beispiel für Oberflächenkomponenten wie Textfelder angereichert wird. Die Steuerung übernimmt ein eigenes Struts-Servlet auf Basis einer speziellen Konfigurationsdatei. In dieser Datei ist unter anderem das Verhalten für die Actions definiert.

Einer der wichtigsten Bestandteile eines Web-Frameworks ist die Unterstützung der Eingabevalidierung. Struts verfügt über ein eigenes Validation-Framework namens XWork, dessen Ursprünge auf WebWork zurückgehen. Das Validation-Framework kennt zwei Arten von Validatoren: Feldvalidatoren und globale Validatoren. Mit den Feldvalidatoren lassen sich Plausibilisierungen auf Feldebene vornehmen, wie zum Beispiel eine E-Mail-Adresse oder eine Kreditkartennummer. Globale Validatoren sind hingegen in der Lage ganze Formulare zu überprüfen.

Wer nach komplexen GUI-Komponenten wie Ajax-DataTables im Basis-Framework sucht, wie sie bei der JSF-Konkurrenz PrimeFaces zu finden sind, wird enttäuscht. Abhilfe kommt mit entsprechenden Plug-ins, zum Beispiel aus dem Fundus der JavaScript-Bibliothek jQuery Javascript Library (siehe Textkasten unten: "JavaScript-Bibliotheken). Die Dokumentation ist, wie inzwischen bei allen Apache-Top-Level-Projekten, sehr gut. Sie wird durch reichlich Fachliteratur ergänzt. Struts-2-Anwendungen haben keine großen Ansprüche an die Laufzeitumgebung. Sie können mit jedem einfachen Servlet-Container wie beispielsweise Jetty oder Tomcat betrieben werden.

Fazit: Struts 1 war der De-Facto-Standard bei Java-Webframework. Aufgrund der Entwicklung von JavaServer Faces konnte Struts 2 niemals die Bedeutung der ersten Generation erlangen. Das hat nichts mit seiner Qualität zu tun, sondern ist einfach dem sehr ähnlichen JSF-Standard geschuldet. Hinter der Zukunft dieses Web-Frameworks muss man daher ein Fragezeichen setzen. Es ist zu erwarten, dass viele Firmen ihre Struts-1-Anwendungen lieber auf JSF als auf Struts 2 migrieren.

»

JavaScript-Bibliotheken

Anders als die hier vorgestellte Server-seitigen Web-Frameworks arbeiten JavaScript-Frameworks auf der Client-Seite, also im Browser. JavaScript-Bibliotheken sollen die Last auf dem Server verringern (zum Beispiel Eingabevalidierung). Eine weitere Aufgabe dieser Frameworks ist es, Ajax-Funktionen für die asynchrone Aktualisierung anzubieten. Das weltweit populärste JavaScript-Framework ist laut SimilarTech und W3Techs das JavaScript-Framework jQuery. Diese JavaScript-Bibliothek wird in Produkten wie WordPress und Frameworks wie ASP.NET-Ajax-Framework verwendet. Sie lässt sich auch in den hier aufgeführten Webframework Struts und Spring MVC relativ einfach integrieren.