JSF oder Struts?Auf der Web Site des Java Magazin ist die aktuelle Umfrage: "Setzen Sie bei Ihren neuen Java-Webprojekten auf Struts oder JavaServer Faces (JSF)?" Ich finde diese Sache in so fern interessant, als das ich mich vor kurzem mit beiden Frameworks im Rahmen der Spring Integration beschäftigt habe. Ich bin natürlich vorbelastet, aber nach meinem Empfinden ist Struts ganz klar technologisch einfach veraltet. Vor allem das Paradigma, dass man seine Klasse von vorbereiteten Struts Klassen ableiten muss, ist einfach schlecht. JSF sieht hier besser aus. Dennoch verstehe ich nicht, warum JSF vor allem den Fokus auf die Unterstützung unterschiedlicher Front Ends legt, wo es doch sowieso ganz primär immer um Web Anwendungen geht. Auch der Fokus auf die Unterstützung von Web GUI Buildern löst zumindest bei nicht-trivialen Projekten nicht das zentrale Problem, nämlich das Design der Anwendung.
Eine interessante Sache ist auch die Unterstützung von Validierungen: Bei Struts muss man hier eine eigene Klasse implementieren, die von einer vorgebenen Oberklasse erbt. Bei JSF definiert man einfache Validierung an den GUI Elementen. Dies verstehe ich überhaupt nicht: Validierung ist Geschäftslogik. Zwar nicht sehr komplex, aber immer noch Geschäftslogik. Wieso soll man das direkt an die GUI Elemente hängen? Das ist ein ziemlich komisches Vorgehen.
Somit ist JSF sicher ein Fortschritt, weil man mehr mit POJOs machen kann. Aber ich persönlich halte Spring MVC eher für das zu Ende gedachte Struts (aber ich bin vielleicht auch voreingenommen). Validierungen sind hier komplett vom Web Framework unabhängig und können somit auch von Rich Clients eingesetzt werden. Und vor allem entkopellt es die Views komplett von den Controllern, so dass eine Integration mit Views wie JSP, XSLT aber auch PDF oder Excel problemlos ist und zwar ohne Änderungen an den Controllern.
Nur ist Spring MVC eben weder so früh auf dem Markt wie Struts noch wird es so gepusht wie JSF, was eben der offizielle Standard ist. Und deswegen taucht es in der Umfrage des Java Magazins auch gar nicht erst auf. Aber auch wenn man Struts oder JSF benutzt, kann man Spring immer noch sinnvoll nutzen, um die Anwendung zu strukturieren. Und die Integration ist bei beiden Optionen recht einfach. Spring zwingt einen eben nicht dazu, das Spring MVC Web Framework zu nutzen...