Entscheidung für ein passendes Web Application Framework

Du hast eine spitzen Idee für eine Web-Anwendung und willst am liebsten gleich losprogrammieren. Aber beim Einrichten Deiner Entwicklungsumgebung fällt Dir ein, daß du gerne mal etwas Neues ausprobieren möchtest, das Dir ein paar Arbeitsschritte erspart und ein schickes modernes Design liefert. Du möchtest gerne ein Web-Application-Framework verwenden.

Ein Web Application Framework ist grundsätzlich für die Entwicklung von dynamischen Webseiten, Webanwendungen oder Webservices ausgelegt. Damit werden sich wiederholende Tätigkeiten vereinfacht, die Wiederverwendung von Code und die Selbstdokumentation der Software-Entwicklung gefördert. Begibt man sich allerdings auf die Suche stellt man schnell fest, daß es unendlich viele Möglichkeiten gibt. Deshalb sollte man zunächst festlegen, welche Anforderungen man an ein solches Framework hat und dann die Alternativen nach diesen Anforderungen hin abklopfen.  Die Frage nach richtig oder falsch läßt sich natürlich so einfach nicht beantworten, aber gut ist es doch ein paar Vor- und Nachteile zu kennen.

web-frameworks

Fragen die sich stellen

Folgende Fragen lohnt es sich vor der Wahl zu beantworten:

  • Wird es viel Traffic auf der Seite geben? Oder ist die Anwendung hinter einer Firewall, im Intranet, für eine begrenzte Nutzeranzahl? Spring oder Struts ist besonders gut skalierbar, GWT oder JSF weniger
  • Ist Performance besonders wichtig? Dann sollte vielleicht ein Javascript-Framework verwendet werden
  • Gibt es ein fertiges Backend, das bedient werden muss? Dann sollte auf eine passende Programmiersprache geachtet werden
  • Wie sieht es mit der Wartbarkeit aus? Bei neuen Frameworks ändern sich die Versionen meist häufiger und die Anwendung muss regelmäßig gewartet werden, eine guter Community-Support hilft hier viel
  • Gibt es wechselnde Entwickler an dem Projekt? Dann ist ein leicht verständliches Framework wichtig mit klar verständlichem Code

Bei meiner letzten Suche nach einem Web-Application-Framework hatte ich folgende Vorraussetzungen. Ich wollte möglichst eine Java-Anwendung schreiben und sollte Daten einer speziellen Datenbank darstellen, unter anderem Geodaten, die ich graphisch darstellen wollte. Das Ganze natürlich mit Open Source Frameworks. Ich habe ein paar Frameworks ausprobiert und eine persönliche Pro-Contra-Liste erstellt, die vielleicht dem ein oder anderen ein paar Stunden Sucharbeit erspart.

Vor- und Nachteile einiger Web-Application-Frameworks

1.   JSF oder Struts mit den Implementierungen: Primefaces, Richfaces, Icefaces

  • Beschreibung: ein Framework basierend auf Facelets und JavaBeans; JSF ist ein Java-Standard mit mehreren Implementierungen, u.a. von SUN und IBM
  • Vorteile: Java-Standard, Teil von JavaEE, Dependency Injection mit EJBs möglich
  • Nachteile: Glassfish-Application-Server wird benötigt,  ständiges switchen zwischen Web- und Javacode, HTML/CSS/Java-MixCode, keine klare Trennung, Doku nicht sehr benutzerfreundlich

2.   Reine Javascript-Web-Anwendung mit den Frameworks JQuery, JQueryUI

  • Beschreibung: JQuery ist eine freie, umfangreiche JavaScript-Bibliothek, die komfortable Funktionen zur DOM-Manipulation und -Navigation zur Verfügung stellt. JQuery-UI ist eine Erweiterung die speziell für Benutzeroberflächen geeignet ist.
  • Vorteile: sehr schnell, da clientseitige Anwendung, einfacher Tomcat-Server nutzbar, schöne Widget-Gallerie
  • Nachteile: Gute Kenntnisse in Javascript benötigt

3. Google Web Toolkit

  • Beschreibung: Ein von Google zur Verfügung gestelltes WebApplicationFramework, welches durch Einsatz eines Java-nach-Javascript-Compilers auch die Entwicklung des Client-Codes in Java ermöglicht
  • Vorteile:  Komplett in Java programmierbar, Browser-unabhängig, Tomcat-Server oder mitgelieferter Jetty-Server nutzbar
  • Nachteile: Google-SDK muss installiert werden, Einbindung weiterer Javascript-Bibliotheken nicht so einfach, keine Dependency Injection

4. Vaadin

vaadin

  • Beschreibung: ein auf GWT basierendes Open-Source-Framework für die Programmiersprache Java.
  • Vorteile: komplett in Java programmierbar, einfacher Tomcat-Server nutzbar, bietet mehr Auswahl an Widgets als GWT
  • Nachteile: Installation des GWT-SDKs und/oder Vaadin-Plugins für Eclipse, Integration weiterer Frameworks schwierig

5. Spring Framework

  • Beschreibung: Framework für Java Applikationen mit Dependency Injection und AOP, Spring MVC speziell für Web-Applikationen
  • Vorteile: Vereinfacht die Entwicklung mit Java/Java EE und fördert gute Programmierpraktiken. Gleichzeitig unterstützt Spring viele der Annotationen von EJB 3.0, so dass ein ähnliches Programmiermodell möglich ist.
  • Nachteile: Muss neu erlernt und  das SDK installiert werden

Selecting the „Best Tool for the Job“

Die Entwicklung mit JSF und dem Glassfish-Server hat sich als sehr mühsam herausgestellt und man hat einen undurchsichtigen Code-Salat mit verschiedenen Programmiersprachen, der nur schwer für einen nachfolgenden Entwickler zu durchschauen ist. Will man aber eine echte Java Enterprise Anwendung bauen, bietet sich dieses Framework natürlich an.

GWT oder Vaadin sind deshalb für mich von Vorteil, da die Anwendung komplett in Java geschrieben werden kann und trotzdem durch den Java-Javascript-Compiler so schnell und performant wie eine Javascript-Anwendung ist. Die reinen Javascript-Frameworks wie JQuery eignen sich am besten, wenn man gutes Javascript schreiben kann. Bei GWT verläßt man sich da auf den Google-Compiler mit keinem so schlechten Ergebnis. Vaadin ist eine tolle Ergänzung dazu mit vielen weiteren Widgets und die finnischen Entwickler erscheinen auch sehr symphatisch und haben eine gute Doku zum Framework, allerdings war es recht kompliziert hier andere Bibliotheken mit einzubinden.

Für viele Entwickler ist mittlerweile Spring das Tool der Wahl, da es ein sehr mächtiges Framework mit noch vielen Zusatzfunktionalitäten ist. Damit muss ich mich aber beim nächsten Mal genauer auseinandersetzen 🙂

Am Ende werdet ihr ums selber Ausprobieren nicht drum herum kommen, aber vielleicht hilft es ja ein paar Gedanken dazu gelesen zu haben.

Links:

Präsentation von  Matt Raible „Choosing a JVM Web-Framework“:

http://static.raibledesigns.com/repository/presentations/ChoosingAJVMWebFramework-CSS2007.pdf

Schreibe einen Kommentar