Many frameworks offer support for developing web applications. Allmost all of them implement the MVC pattern. They can be divided into two groups: action based and component based frameworks. Struts has been the leading action-based framework for years but is now ‘threatened’ by component-based frameworks like Wicket, Tapestry and the future JEE standard JSF. Although JSF is pushed very hard and backed by most vendors, it seems clear that other frameworks are certainly not dead and probably will thrive as well. This will give us a choice to select the tools that fit our needs best.
Webwork is an example of an action based web framework. It’s not only comparable with Struts, but it even may be considered the future of Struts. Recently the announcement has been made that Struts and Webwork will merge to form Struts TI.
At the heart of Webworks lies XWork, a Command Pattern framework with support for inversion of controle/dependancy injection,interception,transparent type conversion,validation,expression language etc. Webwork can be considered to be the web front-end extension, but it does not tie you down to one view technology, you can use jsp’s, FreeMarker, JasperReports, AJAX and more.
It was my first experience with WebWork and it was a good one. The presenter really convinced me of the quality and the possibilities of this framework and I am very interested to try it out. I have used Struts a lot and despite its shortcomings it is still a very good framework and I can imagine that together with Webwork it’ll have a bright future.
Although it is called the ‘next Struts’, Shale has nothing to do with what the speaker refers to Struts classic. It only bears the name for marketing purposes. Shale is completely new and is based on JSF. Shale ‘extends’ JSF with extra functionalities like Validation, Dialogs, AJAX support, reusable views, Spring integration and a test framework. David Geary is a very gifted and funny speaker and he was constantly switching between his slides and his demo’s. He showed how easily you can incorporate client side and server side validation (or both), how a dialog/webflow is implemented and how you can combine it with AJAX technology. One of the many interesting features is the run-time HTML to JSF conversion possibilities (I suppose using the Clay component). It enables you to separate design from business logic. The page is completely defined in HTML, with the addition of a jsfid attribute for each element. The runtime component for each element is defined in a configurationfile. This implementation comes closest to the jsp promise to separate the graphical department from the java developers (although Tapestry, from what I heard, seems to offer a similar mechanism). Although probably not suitable for all implementations, it is certainly a very interesting concept.
It was a very entertaining session and a good introduction to the great things we can expect from JSF.