Why Web Developers Need JavaServer Faces
Subject:   Tapestry and JSF
Date:   2004-12-04 21:16:10
From:   jlong
Response to: Tapestry and JSF

I absolutely, wholeheartedly agree. I used Struts for a year. I then moved to a different company and didn't want to undertake a project (a massive project whose Hibernate domain model has literally hundreds of individual classes) in Struts. So, I tried JSF and came back with my head spinning. Nothng came of it-- though the whiz-bang feel was certainly there for the two or three useful screens we did build. Anyway, we adapted Tapestry. Tapestry has literally taken a project that was stalled in development hell for almost a year and finished it, rebuilt from the groun up, in 3 months. We built it from the ground up using Tapestry. We added things as we learned, but it was all very intuitive. First, simple forms for customer input and simple screens for reporting. Eventually, simple screens became editable screens. We added html-only, macro-style components to standardize our GUI. We then added components with more interactive, dynamic functionality like our menuing system. Many of our forms leverage the supportof Tapestry for common use cases -- use cases that most database schemas dictate. Date input is trivial with the DatePicker. Many to many relationships (ie, take a User who can be assigned many roles from many possible roles) are a breeze with the Palette. One to many relationships using drop down menus are easy AND consistantly developed. Other one-to-one, or input on domain properties which has always been easy is still easy, but now its also robust. For example, telephone numbers, zipcodes, credit cards, etc. can all be validated and guaranteed with Tapestry's validation system. Atop of all this is ridiculously easy localization (hell, it's almost easier to use the localization framework than to avoid: our manager always wants to tweak the copy displayed on various pages. So we just send him the .properties file. Easy!), easy gui development (Mr. Ship was sincere: 95% of the development for our views happens in DreamWeaver), and easy err... messaging.. that is... i haven't ONCE worked with a URL when building this application. Page flow is trivial to implement.

The only other framework out there whith which I've had this experience is ASP.NET. But even there, it's not as sophisticated. .NET, out of the box, doesn't come with as many useful components (there are 3 calendars in .NET and not one of them is as sexy as the one in Tapestry.).Templating in .NET is Still, at the end of the day, a hackneyed, componentized form of include() on each page in different sections of the GUI. And, of course, you can use VS.NET to view your gui, but nthing else. asp: tags. just aren't the same as html.

Anyway, sorry for hte rant. I'm a true fan of Tapestry. I can only say that I wouldn't undertake a google-style application with Tapestry. It does run, like .NET does, a little slower than say a raw cgi/servlet application.