Struts, Tapestry, Spring, Hibernate

Was taugen Open-Source-Frameworks?

26.08.2009 von Diego Wyllie
Die Komplexität von Internet-Anwendungen nimmt in Zeiten von Web 2.0, SaaS und Cloud Computing immer stärker zu. Die gute Nachricht: Java-Entwickler können auf quelloffene und ausgereifte Frameworks zurückgreifen, die ihnen die tägliche Arbeit erleichtern.

Die an Web-Applikationen gestellten Anforderungen sind in den letzten Jahren rasant angestiegen. Anwender erwarten zunehmend, dass sie sich wie Desktop-Systeme bedienen lassen, und wollen in Sachen Komfort und Produktivität keine Kompromisse mehr eingehen, nur weil sie auch unterwegs und von überall darauf zugreifen können. Auch Server-seitig sind Web-Anwendungen angesichts der starken Verbreitung neuer Technologien wie SaaS (Software as a Service) und Cloud Computing komplexer geworden. Ferner müssen Online-Systeme immer bessere Schutzmechanismen implementieren, denn die Methoden der Cyber-Kriminellen werden von Tag zu Tag ausgefeilter. Auch die unaufhaltsame Verbreitung von Smartphones wie iPhone oder Blackberry stellt Softwarehäuser vor die Herausforderung, ihre Systeme für die verschiedenen mobilen Endgeräte zu optimieren.

Quelloffene Frameworks optimieren Web-Projekte

Vor diesem Hintergrund gewinnen quelloffene Frameworks, die den Entwicklern mühevolle Arbeit abnehmen, immer stärker an Bedeutung. Mittlere und große Web-Projekte können ohne Frameworks meist nicht wirtschaftlich realisiert werden. Die Vorteile Produktivität, Flexibilität und Arbeitsteilung im Team sprechen für sich. Aber auch bei kleineren Web-Anwendungen und Teams lohnt sich oft der Einsatz solcher wiederverwendbaren Komponenten.

Java und Ajax geben den Ton an

Die Internet-Landschaft ist heute sehr stark von Java- und Ajax-Technologien geprägt. Aus diesem Grund sind am Markt zahlreiche Frameworks erhältlich, die den Java-Entwickler vor die Qual der Wahl stellen. Hilfestellung soll dieser Beitrag geben. Umfang, Reife und Dokumentation der hier aufgeführten Lösungen ermöglichen kleinen und mittelständischen Unternehmen einen kostengünstigen Einsatz in kommerziellen und kritischen Systemen.

Robuste Frameworks fürs Backend

Web-Entwickler müssen sich mit den Tücken und Besonderheiten des Hypertext Transfer Protocol (HTTP) auseinandersetzen, was ihnen weniger Raum für die Implementierung der eigentlichen Geschäftslogik lässt. Abhilfe versprechen dabei Web-Frameworks. Direkt out-of-the-box bieten sie generische Funktionen, die jede Online-Anwendung implementieren muss, verbergen viele technische Aspekte der Web-Programmierung und ermöglichen damit die Entwicklung auf einer höheren, abstrakteren Ebene.

Struts: Konsequenter Model-View-Controller-Ansatz

Eines der wichtigsten Open Source-Frameworks im Java-Umfeld ist sicherlich "Struts". Von der Apache Foundation entwickelt, wird es häufig als De-facto-Standard im Bereich Java Enterprise angesehen. Nicht zuletzt verdankt Java den Durchbruch als Programmiersprache für Web-2.0-Anwendungen mächtigen Server-seitigen Bibliotheken wie dieser.

Dem quelloffenen Framework Struts liegt das Entwurfsmuster Model View Controller zugrunde.

Mit Hilfe von Struts soll es für Java-Entwickler um einiges leichter werden, anspruchsvolle Rich-Internet-Applikationen zu implementieren. Das liegt in erster Linie an dem sauberen Aufbau nach dem MVC-Muster (Model-View-Controller) und den vielen zur Verfügung gestellten Oberflächenelementen. Für Struts sprechen zudem die vielen nützlichen und in der Praxis erprobten Tools, die die Arbeit mit diesem Programmiergerüst erleichtern. So können verschiedene IDE-Plugins beispielsweise den Aufbau einer Struts-Anwendung visualisieren und über Wizards Programmiercode und Konfigurationen erzeugen.

Tapestry: Web-Entwicklung wie mit Swing

Während Struts sich darauf beschränkt, das Gerüst für eine MVC-Architektur zu liefern, unterstützt ein weiteres Toplevel-Projekt aus dem Hause Apache den Java-Entwickler bei zeitraubenden Aufgaben wie dem Entwerfen vieler robuster Websites mit komplexen Navigationen. Die Rede ist von "Tapestry". Das Framework basiert auf einem Komponenten-orientierten Programmiermodell. Anstatt sich mit Request-Parametern und URLs zu beschäftigen, können Programmierer wie gewohnt mit Objekten arbeiten. Damit findet eine klare Trennung zwischen dem HTML-Code und der Geschäftslogik statt, wie sie schon immer angestrebt wurde. Allerdings muss dabei eine hohe Einarbeitungszeit in Kauf genommen werden.

Die Web-Entwicklung mit Tapestry gleicht der Entwicklung von grafischen Benutzeroberflächen mit Swing. Eine Tapestry-Seite dient dabei als Container und besteht aus drei Dateien: einer XML-Seitenspezifikation, einem HTML-Template und einer Java-Klasse. In der ersten Datei werden die Attribute und Komponenten definiert, die innerhalb der Seite verwendet werden sollen. Die Benutzeroberfläche wird durch die HTML-Schablone bestimmt. Schließlich enthält die Java-Klasse im Wesentlichen einige Accessor-Methoden, mit denen die Seitenattribute modifiziert werden können. Seit dem aktuellen Release (5.x) von Tapestry ist unter anderem eine Integration in Hibernate und Spring möglich.

Spring: EJB-Features auch in Tomcat, Jetty und Co.

Die Entwickler des "Spring Framework", heute bei der Firma SpringSource, waren mit den von J2EE zur Verfügung gestellten Methoden zum Entwickeln von Unternehmensanwendungen nicht zufrieden. J2EE bietet zum Abbilden der Geschäftslogik die Enterprise Javabeans (EJB). Diese sind jedoch nur im Zusammenspiel mit J2EE-Servern lauffähig. Stattdessen basiert Spring auf einem modularen, Pojo-basierenden (Plain Old Java Object) Programmiermodell, welches das Deployment unternehmenskritischer, EJB-ähnlicher Anwendungen auch in Servlet-Containern wie Tomcat oder Jetty ermöglichen soll.

Eine Besonderheit von Spring: Das Framework ermöglicht dem Entwickler, Prinzipien der Aspekt-orientierten Programmierung anzuwenden. Dadurch kann man beispielsweise technische Aspekte wie Transaktionen oder Sicherheit isolieren und den Code der Business-Logik davon freihalten. Spring soll ferner eine ganzheitliche Lösung bieten, um unterschiedliche Frameworks unter einem Dach zusammenzubringen. So bauen viele Projekte zum Beispiel auf einer Kombination aus Struts, Spring und Hibernate auf.

Hibernate: Hohe Flexibilität in der Datenbankschicht

Das quelloffene Persistenz-Framework "Hibernate" ergänzt die zuvor aufgeführten Systeme optimal, indem es leistungsfähige ORM-Technologien (Object Relational Mapping) zur Verfügung stellt. So ermöglicht die von Red Hat entwickelte Lösung, gewöhnliche Objekte mit Attributen und Methoden (Pojo) in relationalen Datenbanken zu speichern und aus entsprechenden Datensätzen wiederum Java-Objekte zu erzeugen. Darüber hinaus bietet Hibernate effiziente Mechanismen, auf Datenbanken zugreifen zu können, ohne Datenbankzugriffe explizit in SQL programmieren zu müssen. Abhängig vom SQL-Dialekt der eingesetzten Datenbank generiert das System dafür die entsprechenden SQL-Statements. Dadurch soll die Applikation selbst von der gewählten Datenbank unabhängig bleiben und in Zukunft leichter zu modifizieren sein.

Schnellere Frontend-Entwicklung mit Ajax-Frameworks

Nicht nur bei der Implementierung der Datenhaltungs- beziehungsweise Anwendungsschicht können Entwickler auf bewährte Open-Source-Bibliotheken zurückgreifen. Um etwa den Einbau von Ajax-Funktionen komfortabel zu gestalten, haben sich in kürzester Zeit eine Reihe von Skript-Bibliotheken etabliert, die auf dem Präsentations-Layer zum Einsatz kommen, um die Interaktion mit dem Benutzer attraktiver und einfacher zu machen. Sie kapseln häufig benötigte Funktionen und liefern vorgefertigte Komponenten für Benutzeroberflächen, Effekte oder Animationen. Folgende Client-seitigen Frameworks werden im Browser aufgeführt und sind somit unabhängig von der eingesetzten Server-Technologie, ergänzen sich aber optimal mit den zuvor aufgeführten Produkten.

Dojo: Desktop-Oberflächen im Web nachmachen

Mit dem Javascript-Framework Dojo können Desktop-typische Funktionen wie Drag-and-Drop in Web-Anwendungen nachgemacht werden.

Einer der bekanntesten Vertreter der modernen Ajax-Frameworks ist "Dojo", das von Herstellern wie IBM, Sun oder AOL unterstützt wird. Die Javascript-Library soll Entwicklern einfach zu nutzende User-Interface-Komponenten für Web-2.0-Anwendungen an die Hand geben. "Dojo Core", der Kern der Bibliothek, ist dabei nur 26 KB groß und unterstützt laut Anbieter die Browser Firefox, Safari, Internet Explorer und Opera.

Darin enthalten ist unter anderem eine Sammlung von GUI-Elementen wie etwa sortierbare Tabellen, Bäume, Datumsfelder oder Menüs beziehungsweise Menüleisten. Das Aussehen der einzelnen Komponenten kann mittels CSS angepasst werden. Zudem werden Formular-Validatoren mitgeliefert, die etwa bei der Prüfung der korrekten Syntax von E-Mail-Adressen hilfreich sein können. Ebenfalls im Paket enthalten sind einfach zu nutzende "Drag-and-Drop"-Skripts sowie Lokalisierungsfunktionen. Viele Dojo-Features lassen sich online in Aktion sehen.

Adobe Spry: Asynchrone Datenübertragungen leicht gemacht

Ein weiteres, leistungsfähiges Ajax-Framework liefert der Multimedia-Experte Adobe. Mit "Spry" steht Entwicklern eine Reihe interessanter Funktionen zum Erstellen datengestützter Komponenten, Auslösen von Formularüberprüfungen, Einfügen interaktiver Layout-Elemente und Anwenden visueller Effekte zur Verfügung.

Adobe integriert das Ajax-Framework Spry in seinen Website-Editor Dreamweaver.

Das Framework ist in Dreamweaver integriert, kann aber auch in jedem beliebigen Projekt verwendet werden. Es müssen lediglich die entsprechenden Dateien von der Adobe-Website geladen und in die eigene Anwendung eingebunden werden. Das Framework besteht aus den Modulen "Spry Data", "Spry Widgets" und "Spry Effects". Mit dem Ersten lassen sich anhand von "Spry XML Data Sets" asynchrone Datenübertragungen zwischen Server und Browser besonders leicht implementieren. Die vom Server gesendeten Daten können ebenfalls auf einfache und intuitive Weise im HTML-Code der Seite bearbeitet werden.

Google Web Toolkit: Websites aus Java-Code generieren

Eine interessante Alternative für Java-Entwickler, ihre Web-Anwendungen konform zu den gestiegenen Erwartungen der Online-User zu gestalten, stellt das "Google Web Toolkit" (GWT) dar. Dabei handelt es sich um eine Technik sowie ein Framework zugleich, die der Internet-Riese im Jahr 2006 vorgestellt hat. Die Besonderheit der Lösung ist ein integrierter Compiler, der Java-Code in Ajax-Code überführt. Die auf DHTML und Javascript basierende Benutzeroberfläche der GWT-Anwendung wird also Server-seitig entwickelt und besteht vollständig aus Java-Klassen. Wie das Ergebnis am Ende aussehen kann, zeigt Google in einer Demo-Mail-Anwendung.

Das Google Web Toolkit generiert anspruchsvolle Ajax-Websites aus Java-Code.

Ein wesentlicher Vorteil: Die von Google mitgelieferten Komponenten sollen die fehleranfällige und oft mühsame Aufgabe übernehmen, die Unterschiede und Besonderheiten moderner Browser zu analysieren und entsprechend angepasstes Javascript zu schreiben. Als Java-Entwickler darf man wiederum sein gewohntes Arbeitsumfeld weiterhin einsetzen. Beim Debugging des Web-Clients ergeben sich sogar ganz neue Möglichkeiten. So lassen sich zur Laufzeit etwa Ajax-Komponenten oder User-Events bequem mit dem funktionsreichen Java-Debugger untersuchen.

Abgerundet wird das GWT mit einem eigenen XML-Parser, Internationalisierungs-Unterstützung, einer RPC-Schnittstelle (Remote Procedure Calls) sowie einem Widget-Paket zur Gestaltung der grafischen Oberfläche. Ein interner Servlet-Container (Tomcat beziehungsweise Jetty), der beim Entwickeln im so genannten Hosted-Modus zum Einsatz kommt, wird ebenfalls mitgeliefert.