[Tapestry Logo] Tapestry

How does Tapestry compare to other frameworks?

Tapestry is very much unlike most other frameworks in that it doesn't use code generation; instead it uses a true component object model based on JavaBeans properties and strong specifications. This gives Tapestry a huge amount of flexibility and enables dynamic runtime inspection of the application with the Tapestry Inspector (a mini-application that can be built into any Tapestry application).

In addition, Tapestry applications require far less Java coding and are far more robust than equivalent applications developed with other popular frameworks. This is because the Tapestry framework takes responsibility for many important tasks, such as maintaining server-side state and dispatching incoming requests to appropriate objects and methods.

How is the performance of Tapestry?

My own testing, documented in the Sept. 2001 issue of the Java Report, agrees with other testing (documented in the Tapestry discussion forums): Although straight JSPs have a slight edge in demo applications, in real applications with a database or application server backend, the performance curves for equivalent Tapestry and JSP applications are identical.

Don't think about the performance of Tapestry; think about the performance of your Java developers.

Is Tapestry a JSP tag library?

Tapestry is not a JSP tag library; Tapestry builds on the servlet API, but doesn't use JSPs in any way.  It uses it own HTML template format and its own rendering engine.

In the current release, 2.2, Tapestry does not interoperate with JSP pages ... its a whole, seperate world.

This has proven to be a big sticking point in adoption of Tapestry.  In the next release, 2.3, Tapestry will finally get JSP interoperation.  You'll be able to represent a Tapestry component inside a JSP as a JSP tag, but still use everything good and bad about JSPs, including other taglibs and even Java scriplets.

What does it cost?

Tapestry is open source and free. It is licensed under the Apache Software License, which allows it to be used even inside proprietary software.
Is there a WYSIWYG editor for Tapestry, or an IDE plugin?

Currently, no WYSIWYG editor is available for Tapestry; however, the design of Tapestry allows existing editors to work reasonably well (Tapestry additions to the HTML markup are virtually invisible to a WYSIWYG editor).

Spindle is a Tapestry plugin for the excellent open-source Eclipse IDE. It adds wizards and editors for creating Tapestry applications, pages and components.

I have to restart my application to pick up changes to specifications and templates, how can I avoid this?

Start your servlet container with the JVM system parameter net.sf.tapestry.disable-caching set to true, i.e., -Dnet.sf.tapestry.disable-caching=true.

Tapestry will discard cached specifications and templates after each request. You application will run a bit slower, but changes to templates and specifications will show up immediately. This also tests that you are persisting server-side state correctly.

I keep getting StaleSessionExceptions from links and forms.

Tapestry doesn't create a HttpSession until you have server-side state to store. Most applications don't start to store server-side state until after the Home page.

By default, ActionLink, DirectLink and Form require that a session be already created (this is primarily to handle the case where a user walks away from their computer and returns, and the servlet container has discarded the HttpSession in the meantime). Set the stateful parameter to false (i.e., <binding name="stateful" expression="false"/>) to disable this check.

 
© 2003 Apache Software Foundation. All rights reserved.