Fing alles mal mit Struts an. Das ist jetzt aber überholt. Es gibt ein paar neue und nicht mehr ganz so neue.
Ich werde hier über JSF, wicket und struts2 berichten. Die wirken am vielversprechendsten.
Alle haben ihre Stärken und Schwächen. Man muß wohl pro Projekt entscheiden.
Ich prüf die alle als Webfrontends für mein Börsenspiel.
1. JSF (präferiere apache.jakarta myfaces und facelets)
+ gute Dokumentation, gute Bücher, viele user generated content im Internet, alles gut googlebar.
+ Komponentenmarkt, wobei das alles nicht so einfach ist. Oracle hat apache seine adf-Komponenten geschenkt. Das sind zusätzliche Sachen, die man myFaces beigeben kann. Unter apache-Flagge heissen diese Zusatzkomponenten Trinidad. Soll sehr ausgereift sein. Ich halte das aber bis auf weiteres für nicht einfach. Gibt auch ajax-Komponenten (z.B. IceFaces). Man braucht da gar nicht javaScript programmieren. Die Ajax-Magic ist in den Komponenten. Jedoch kann die Integration teilweise recht komplex werden. Hab das sowieso noch gar nicht ausprobiert und bin eher mit den Basis-Komponenten unterwegs. Und ich hatte z.B. mit der Integration von facelets mit ein paar Tomahawk-Komponenten bei gegebenen Zeitrahmen für mich unlösbare Probleme.
+ irgendwie recht übersichtlich. Man definiert in einer faces-config.xml Navigationspfade, Validierer, Konvertierer, "Aktionen" (heissen Backing-Beans). Zum Zurechtfinden ist das besser als jede Doku.
+ Facelets hat einen absoluten brauchbaren Templating-Mechanismus. Man kann ein Template für direkt mehrere Seiten definieren. Z.B: Links ist der Navigationsbereich. Oben ein Header. Unten ein Footer und in der Mitte der Hauptbereich. Oder beliebig anders. Spezialisierte Html Designer können damit klarkommen.
+ wie überall in Java gute Unterstützung für Internationalisierung und Lokalisierung.
+ wirklich gute Integration mit Spring.
+ JBoss hat ein eigenes sehr interessantes Framework namens SEAM, um JSF mit EJB3 oder normalen Backend-POJOS zu verbinden.
+ Gibt einen guten Toolsupport. Ich mach aber erstmal ohne. Oft verwirrt das nämlich eher, wenn man sich noch nicht so gut mit einer Technologie auskennt.
+ JSF wird eine gute Zukunft vorausgesagt. Wohl v.a. auch wegen der Übersichtlichkeit. Das verspricht für Anwenderorganisationen leichte Erweiterbarkeit, Wartung, etc. und dem Komponentenmarkt, wobei auf diesem Markt vieles sowieso openSource ist.
+ oft sind die Fehlermeldungen ziemlich klar. Vor allem mit Facelets.
- wohl nicht geeignet für Seiten mit sehr viel Traffic. Es wird da so einiges in der Http-Session abgelegt und das skalliert dann zwangsläufig nicht so gut bei steigenden Anwenderpopulationen.
- Manche Sachen sind einfach kurios. Wenn man z.B. nicht ein paar Workarounds benutzt, stimmt die URL im Browser nicht mit der dargestellten Seite überein. Manche JSF-aficionados finden das nicht so schlimm. Ich schon. Gibt zwar workarounds, mir sind aber deren Nachteile noch nicht zur Gänze klar.
Oder sowas hier:
http://sfjsf.blogspot.com/2006/03/usings-sets-with-uidata.html (hat mich 2 Stunden gekostet).
- Es gibt ein paar Kompatibilitäts-gotchas zwischen den benutzten Technologien, die mich ganz schön ins Schwitzen bringen. Google hilft oft.
- Backbutton ist problematisch. Das ist leider oft so. SEAM behauptet, es gelöst zu haben.
- Gibt zwar eine Menge Komponenten, die definitiv einiges leisten. Bisher hat das ausgereicht. Wenn nicht, muß man wohl selber tief da reingehen. Eine JSF-Komponente hat 7 Lebenszyklus-Schritte pro Aufruf. Das ist sicher nicht einfach.
- Anfänger sollten das imho nicht als erstes Java Web Framework nehmen. Default-mässig ist da JSP als Basis für die View. Das war mir - wie sehr sehr vielen - zu frustrierend. Zukünftige Versionen sollen JSF freundlicher werden. Wenn man sich mit Model View Controller und Schichten-Architekturen nicht so auskennt, kann es leicht zu einem Chaos-Design verleiten, auf das man nach einer Woche keinen Bock mehr hat.