Thursday, November 11, 2004

Struts Shale 2.x and JSF

There has been a lot of talk throughout the Java community on the new Struts Shale proposal and its decision to embrase JSF.

As usual, I am highly confused and dissapointed in the "outrage" of many who see this as the death of Struts. There appear to be many JSF haters out there who want "their" open source framework to be used in place of JSF or just like to complain against anything Sun related.

Here's the way I see it. It's the only move Struts could make. They aren't replacing JSF, they're providing a framework to work within JSF. JSF provides a great API and set of configurations for doing dependancy injection based upon the page, session or application. It has a very nice view layer. I've enjoyed using it on a small app that I wrote at work for documentation viewing.

The Shale proposal takes the point of view that it would be silly to reinvent the wheel. Hence they are looking at using JSF's API as a link up to the view controller piece of the application. In many respects, they're looking to create a way to wire JSF with a bunch of other pieces and parts to create a platform to build applications upon.

This is really no different than IBM building JSF support into their Websphere and the developer choosing to use WDO to access business data. The developer is using JSF, but they're using some specific IBM technology to help out.

One needs to remember that JSF is an API, not an application. JSF is also an API for the view layer only. By deciding to use the JSF APIs, Shale doesn't need to reinvent the wheel and can concentrate on adding value in areas that JSF does not provide, like Dialog management, Authentication, etc. In essence, providing pieces to the application puzzle that don't exist in a nice concise package.

And yes, I'm sure someone will tell me that AppFuse does all that. But you know...even my non-technical management has heard of Struts and JSF, even if they don't know what it is. They don't know what AppFuse is. They don't know half of the stuff that is talked about on message boards. WebWork? Tapestry? HiveMind? No clue.

It comes down to this. Is it a standard? JSF is. If not, is it a defacto-standard? Struts is. That's 2 points. Next question is, can I hire someone who knows something about it. Yes on Struts, no on JSF, but that is going to change as Oracle and IBM roll out products to support JSF.

Struts Shale had only one goal, find a horse to hitch its cart to, and figure out what it needed to put in the cart. It hitched to JSF for view. From my perspective, there is no other horse to use.

No comments: