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

Spring MVC

Der Auslöser, das Framework Spring zu entwickeln, war der mangelhafte JEE-Standard vor rund zehn Jahren. Besonders die Kritik an den komplizierten und unausgereiften Enterprise JavaBeans hat zu der JEE-Konkurrenz Spring beigetragen. Ein eigenes Spring-Web-Framework war laut Rod Johnson zu Anfang überhaupt nicht geplant (siehe Introduction to the Spring Framework). Da es aber keinen JEE-Standard für ein Java-Web-Framework gab und die damalige Version von Struts nicht überzeugen konnte, entschied man sich für die Entwicklung eines eigenen MVC-Web-Frameworks namens Spring MVC, dem später Grails folgende sollte (siehe Textkasten JVM-Frameworks).

Das Web-Framework Spring MVC kann mit den anderen hier genannten Frameworks nur bedingt verglichen werden: Spring MVC ist genau genommen lediglich ein Modul des gesamten Spring Frameworks und daher nur als Ergänzung des Spring Frameworks gedacht. Es erweitert dieses Basis-Framework zusammen mit anderen Modulen wie Spring Roo zu einem Full-Stack-Framework. In diesem Full-Stack-Framework gibt es Vorlagen und Konnektoren für die unterschiedlichsten Einsatzbereiche, zum Beispiel Spring Data JPA oder Konnektoren zu NoSQL-Datenbanken.

Foto: Tutorialspoint.com

Spring MVC arbeitet wie die anderen Frameworks dieses Vergleichs nach dem MVC-Prinzip (siehe Abbildung). Die Anfrage (Request) eines Webclients wird gegebenenfalls gefiltert und danach von einem Spring-eigenen Dispatcher-Servlet verarbeitet. Dieses Servlet leitet die Anfrage an einen Handler (Controller) weiter, der für das Data Bindung und die Validierung der Anfrage sorgt. Von da an geht es weiter zu einem Model, dessen Daten zur Anzeige benötigt werden oder dessen Daten aktualisiert werden sollen. Die Daten werden im Anschluss daran vom Dispatcher-Servlet über einen View-Resolver an die zuständige View weitergeleitet. Erst danach wird die View als Antwort an den Web-Client zurückgegeben.

Wer von einem komponentenbasierten Framework wie Swing oder JSF kommt, wird bei Spring MVC vergeblich nach komplexen GUI-Komponenten wie Ajax-DataTables Ausschau halten. Solche Komponenten lassen sich aber durch Plug-ins der JavaScript-Bibliothek jQuery ergänzen. Die Dokumentation ist wie bei allen Spring-Bestandteilen ausgezeichnet. Zudem gibt es eine Fülle von Fachliteratur. Dadurch, dass Spring MVC auf der Servlet-API ohne proprietäre Zusätze aufsetzt, laufen Spring-Anwendungen in jedem einfachen Webcontainer wie beispielsweise Jetty oder Tomcat.

Fazit: Spring MVC ist ein Modul des Spring Frameworks. Das Spring Framework ist weit verbreitet und genießt einen sehr guten Ruf in Entwicklerkreisen. Wer ohnehin Anwendungen auf Basis des Spring Frameworks entwickelt, für den ist Spring MVC sowohl technologisch als auch strategisch eine gute Alternative zum JEE-Standard.

»

JVM-Frameworks

Neben den im Vergleich aufgeführten Java-Webframeworks hat sich mit Grails, Lift, Rails und Play eine interessante Alternative entwickelt. Diese Ende 2005 aufgekommenen Technologien laufen ebenfalls auf der Java-VM, sind kompatibel mit Java und bieten einen voll ausgebauten Technologie-Stack. Im Gegensatz zu Java-Webanwendungen werden Anwendungen auf dieser Basis mit Java-ähnlichen Programmiersprachen wie Ruby und Scala entwickelt. Diese Frameworks vereinfachten die Entwicklung von Java-Webanwendungen erheblich. Aus diesem Grund haben sie im Bereich des Rapid Application Development von Webanwendungen viele Anhänger gefunden.