You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by hl...@attbi.com on 2003/05/30 16:34:25 UTC

Re: Tapestry Vs. JSF vs. Struts vs. ...

Much of Tapestry is subtraction, not addition.

It's all about the stuff you don't have to worry about because the framework 
takes care of it for you.

This is hard for outsiders to grasp.  They are used to weak solutions and don't 
realize that something significantly more powerful is possible.

You think you have to worry about query parameters but you don't -- Tapestry 
decides on the names for your form elements, and transfers the data out of 
query parameters for you.

You think you need to figure out the "operation" for a link as a servlet (or 
Struts action), but you don't ... you just tell the component which method to 
execute when the link is clicked.  It writes the URL, it dispatches the 
request, it invokes your method.

You think you need to move data in and out of the HttpSession to make it 
persistent between requests ... but you don't.  You just tell Tapestry which 
properties should be persistent and it takes care of it for you.

And the list goes on.

Meanwhile, an huge part of the Tapestry story is what happens when things go 
*wrong*.  Working in Struts, when there's any kind of error, all I get is a 
stack trace.

Tapestry has pretty darn cool exception reporting.  An uncaught exception 
results in the Exception page, which contains:
1) The whole stack of nested exceptions
2) All JavaBeans properties of each exception.
3) The stack trace of the most deeply nested exception.
4) Tablular output about Servlet API objects: HttpRequest, HttpSession, etc.
5) All HttpRequest parameters and attributes, all HttpSession attributes, etc.
6) All JVM System properties

In addition, most exceptions have a location property, which identifies the 
file and line of the error.  All runtime objects in Tapestry (pages, 
components, bindings, etc.) are "tagged" with a location: the location in a 
specification or HTML file of the element they were created from.

This means that an error at runtime, long after a spec file is parsed, still 
identifies the position in the spec file!  If you make an error that can't be 
detected until runtime, Tapestry still points you right to the offending line!

Anyway, I could go on and on and on ... but I need to save it for the book :-)



--
hlship@attbi.com

Creator, Tapestry: Java Web 
Components
http://jakarta.apache.org/tapestry
> I'll second that.
> 
> Even after 3-4 months I still consider myself a newbie and am learning 
> more on daily basis.
> One thing that really surprises me though is the fact that despite the 
> awesome potential hidden in Tapestry to finally make a difference in 
> making a user WORK un-interrupted by using intuitive and consistent 
> components I hardly hear/ read anything on that subject.
> 
> Unless I'm very much mistaken sw/apps are made 4 users to work with (or 
> is it 4 developers to just do that, develop).
> The amount of flex introduced by Tap to produce really reusable, 
> intuitive and constistent components (not as in the hype meaning of the 
> term) is quite fenomenal and,4 me at least, is 1 of the main reasons to 
> stick with it and invest further.
> Once one posesses a solid set of 'idiot-proof' visual components that 
> users do NOT ask Qs about you're there.
> Just focus on the problem at hand and solve the rest (usually 80% of the 
> whole) in an 'idiot proof' manner.
> 
> To me this is where the ultimate strength of Tapestry lies. Having a 
> cheap (open) way to quickly produce robust apps that the user can work 
> with without even noticing what he is doing (because it feels natural, 
> not because he's a twit).
> 
> It could be that nobody cares but since I am not a developer but a 
> developing 'content guy' I tend to look not only at the platform but 
> possibly even more to what it costs to achieve something with the 
> platform. Having come across a multitude of stuff over the past 15y or 
> so I know that it is not so much a matter of *can you do it* but *how 
> much effort & funds does it cost* to do it.
> After all, users are usually using and paying for the stuff so appealing 
> to these two things might just make the diffrerence, esp. now that 
> Tapestry has gone 'official'.
> 
> Congrats & compliments 2 the Tapestry brains.
> Cheers
> Fermin DCG
> 
> 
> Howard M. Lewis Ship wrote:
> 
> >It's all about where you want to focus your energies.
> >
> >With Struts and (what I understand of JSF), you spend way too much time doing 
> plumbing.  Tapestry
> >does all the ugly plumbing; you don't have to be concerned with the servlet 
> API:  HttpSession,
> >HttpServlet, HttpServletRequest ... all that stuff disappeers.  You write just 
> the tiny amount of
> >code to be executed when "stuff happens" (link clicked or form submitted) in 
> the form of a listener
> >method.  Tapestry does all the rest.
> >
> >Tapestry lets you code in the familiar world of stateFUL JavaBeans, rather than 
> in the artificially
> >stateLESS world of servlets.
> >
> >Tapestry has phenominal exception reporting; if there's an error in your HTML 
> templates or your
> >specifications (the companion files that provide Tapestry with the details of 
> your pages) you get
> >not just a stack trace, but the exact file and line where the error took place, 
> along with a rundown
> >of all the Servlet API objects (request, session, etc.).  All the runtime 
> objects (pages,
> >components, bindings, whatever) are "tagged" with the location (file, line and 
> column) from which
> >they were generated.
> >
> >Tapestry doesn't use JSP ... Tapestry HTML templates are still valid HTML.  
> JSPs (and even Velocity)
> >instruments HTML by injecting a whole second language into the template: you 
> template is a mix of
> >HTML, XML, JSP directives and Java (for JSP) and HTML and Velocity directives 
> (for Velocity).  In
> >Tapestry, your HTML is still HTML ... though in some cases, there are extra 
> attributes on tags, and
> >special interpretations of attribute values.
> >
> >Anyway, I've been encouraging the community to be a bit more vocal about why 
> they feel Tapestry is
> >so good.  The 3.0 stuff especially gives you vast power and tremendous 
> simplicity (and enough rope
> >to hang yourself, but that's another discussion!).  A 3.0 beta will be out, 
> probably this weekend.
> >
> >--
> >Howard M. Lewis Ship
> >Creator, Tapestry: Java Web Components
> >http://jakarta.apache.org/tapestry
> >
> >  
> >
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>