Wicket 1.2 final erschienen

Das Java Web-Application-Framework ist nach vier Release Candidates in der finalen Version 1.2 erschienen. Download, Release-Notes und Dokumentation unter wicket.sourceforge.net.

Die aus meiner Sicht herausragendsten Eigenschaften von Wicket sind:

  • Keine Konfigurationsdateien
    Wer schon mal eine struts-config.xml oder faces-config.xml debuggen musste, wird das schwer zu schätzen wissen. Ich weiß auch nicht, warum die XML-Konfiguration als so herausragendes Feature von Struts oder JSF angepriesen wird. In der Praxis habe ich da nur Nachteile erkennen können. Aber vielleicht entgeht mir ja was – zum Beispiel ein vernünftiges grafisches Tool?
    Bei Wicket muss man einmalig die web.xml bearbeiten, der Rest wird in Java programmiert.
  • Templates bleiben valides XHTML
    Oft ist der Workflow ja so, dass man als Entwickler einen mehr oder weniger fertigen HTML Prototypen erhält. Bei Tiles oder Smarty geht dann das große zerschnippeln in Einzelteile los, die dann per include oder sonstigen Markup wieder zusammengefügt werden. Wenn dann später noch mal Änderungen kommen, muss man immer manuell abgleichen, was nervig sein kann, aber auf jeden Fall eine Fehlerquelle darstellt.
    Bei Wicket wird das zumindest ein wenig abgemindert. Zwar muss man die Einzelteile auch herauskopieren, die eigentlichen Seiten werden dann jedoch mit speziellen wicket-Tags angereichert, die in einem eigenem XML-Namespace liegen. Dabei muss man nie etwas aus dem HTML entfernen, man fügt nur hinzu. Auf dem Server werden diese Teile dann dynamisiert. Das Ergebnis ist aber immer noch valides XHTML, und sieht im Browser bei richtiger Anwendung genauso aus wie ohne die Tags. Das Template kann also problemlos an den Designer zurückgegeben werden, der damit weiter arbeiten kann.
  • Page-basierte Objektorientierung
    Jede Seite der Webapp findet ihre Entsprechung in einem Page-Objekt. Die Möglichkeit zur Vererbung wird hier zu einem mächtigen Werkzeug. So würde man zum Beispiel für alle Seiten einer Kategorie eine abstrakte Oberklasse entwerfen, von der dann die Unterklassen (=> Einzelseiten) abgeleitet werden.
    Der dynamische Seiteninhalt wird schließlich aus Einzelkomponenten zusammengebaut, die ebenfalls wieder in einer Vererbungshierarchie eingegliedert werden können. In beiden Fällen kann neben dem Verhalten auch das Markup vererbt und erweitert werden.
  • Einfache AJAX Entwicklung
    Mit Wicket ist es möglich, die Ereignisse einer Komponente statt mit normaler Request-Verarbeitung via AJAX zu empfangen. Das Verfahren ist sehr einfach, für den Entwickler transparent, und ohne einer Zeile JavaScript zu bewerkstelligen.
    Um beispielsweise aus einem normalen Löschen-Link, der via Request einen Datensatz aus einer Liste entfernt, einen coolen AJAX-Link mitsamt Ausblend-Effekt für den Datensatz zu machen, müssen nur einige wenige Zeilen Java geändert werden.
  • Zauberei
    Okay, nicht wirklich. Aber viele der kleinen und immer wiederkehrenden Probleme, auf die man bei der Webentwicklung stößt, sind in Wicket sehr robust gelöst – beispielsweise der Backbutton-Support oder die Darstellung von Datentabellen samt Blättern und Sortieren.

Natürlich ist nicht alles rosarot im Wicket-Land. Das Wiki wächst zwar beständig, und die Community ist auch äußerst hilfsbereit, doch Hintergrundinformationen zur Arbeitsweise des Frameworks bleiben etwas verborgen. Das ist in den meisten Fällen nicht so wichtig, doch bei komplexeren Sachen ist man ohne die Mailingliste zumindest am Anfang aufgeschmissen. Abhilfe soll hier ein Buch (Wicket in Action) schaffen, welches aber zur Zeit noch in der Schreibe ist. Ansonsten sind die vielen Beispiele die ergiebigste Informationsquelle.

Auch die IDE-Unterstützung befindet sich noch in den Anfängen; es gibt zwar ein Eclipse-Plugin, doch das ist noch früh in der Entwicklung und nicht ganz ausgereift. Die Richtung stimmt aber auch hier schon mal; umfangreiche Testfeatures incl. Selenium RC-Anbindung machen neben den üblichen Wizards schon mal Appetit auf mehr.

Meine del.icio.us Links zum Thema Wicket