| <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"> |
| <html> |
| <head> |
| <title>Tapestry: FAQ</title><link rel="STYLESHEET" type="text/css" href="scripts/style_virtlib_pcIE55.css"> |
| </head> |
| <body bgcolor="#839cd1" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> |
| <table width="100%" border="0" cellspacing="0" cellpadding="2"> |
| <tr> |
| <td valign="top" align="left"><IMG height=44 alt="[Tapestry Logo]" src ="images/ico_t.gif" width=44 align=absMiddle border=0 > <IMG height=22 alt=Tapestry src="images/hd_tapestry.gif" width=100 align=absMiddle vspace=17 border=0> |
| |
| <br><br> |
| |
| <table border="0" cellspacing="0" cellpadding="2"> |
| <tr valign="top"> |
| <td><IMG height=12 src="images/dots_leftnav.gif" width=14></td> |
| <td><b>How does Tapestry compare to other frameworks?</b> |
| |
| <br><br> |
| |
| 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). |
| |
| <p>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.</p> |
| |
| |
| |
| |
| |
| </td> |
| </tr> |
| |
| <tr><td height="10"><IMG src="images/spacer.gif" width=1></td></tr> |
| |
| <tr valign="top"> |
| <td><IMG height=12 src="images/dots_leftnav.gif" width=14></td> |
| <td><b>How is the performance of Tapestry?</b> |
| |
| <br><br> |
| |
| 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. |
| |
| <p>Don't think about the performance of |
| Tapestry; think about the performance of your Java developers.</p> |
| |
| |
| </td> |
| </tr> |
| |
| <tr><td height="10"><IMG src="images/spacer.gif" width=1></td></tr> |
| |
| <tr valign="top"> |
| <td><IMG height=12 src="images/dots_leftnav.gif" width=14></td> |
| <td> |
| <P><b>Is Tapestry a JSP tag library?</b> |
| |
| <br><br> |
| |
| Tapestry is |
| <STRONG>not </STRONG>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.</P> |
| <P>In the current release, 2.2, Tapestry does not interoperate with |
| JSP pages ... its a whole, seperate world.</P> |
| <P>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.</P> |
| |
| |
| |
| |
| |
| |
| </td> |
| </tr> |
| |
| |
| |
| |
| <tr><td height="10"><IMG src="images/spacer.gif" width=1></td></tr> |
| |
| <tr valign="top"> |
| <td><IMG height=12 src="images/dots_leftnav.gif" width=14></td> |
| <td><b>What does it cost?</b> |
| |
| <br><br> |
| |
| Tapestry is open source and free. It is licensed |
| under the Apache Software License, which allows |
| it to be used even inside proprietary software. |
| |
| </td> |
| </tr> |
| |
| <tr><td height="10"><IMG src="images/spacer.gif" width=1></td></tr> |
| |
| <tr valign="top"> |
| <td><IMG height=12 src="images/dots_leftnav.gif" width=14></td> |
| <td><b>Is there a WYSIWYG editor for Tapestry, or an IDE plugin?</b> |
| |
| <br><br> |
| |
| 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). |
| |
| <p><a target="top" href="http://sf.net/projects/spindle">Spindle</a> |
| is a Tapestry plugin |
| for the excellent open-source <a href="http://www.eclipse.org">Eclipse</a> IDE. It adds wizards and editors |
| for creating Tapestry applications, pages and components.</p> |
| |
| |
| </td> |
| </tr> |
| |
| <tr><td height="10"><IMG src="images/spacer.gif" width=1></td></tr> |
| |
| <tr valign="top"> |
| <td><IMG height=12 src="images/dots_leftnav.gif" width=14></td> |
| <td><b>I have to restart my application to pick up changes to specifications and templates, how |
| can I avoid this?</b> |
| |
| <br><br> |
| |
| Start your servlet container with the JVM system parameter |
| <code>net.sf.tapestry.disable-caching</code> set to true, i.e., |
| <code>-Dnet.sf.tapestry.disable-caching=true</code>. |
| |
| <p>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.</p> |
| |
| |
| |
| |
| |
| </td> |
| </tr> |
| |
| <tr><td height="10"><IMG src="images/spacer.gif" width=1></td></tr> |
| |
| <tr valign="top"> |
| <td><IMG height=12 src="images/dots_leftnav.gif" width=14></td> |
| <td><b>I keep getting <A href="doc/api/net/sf/tapestry/StaleSessionException.html">StaleSessionException</a>s |
| from links and forms. |
| </b> |
| |
| <br><br> |
| |
| Tapestry doesn't create a <code>HttpSession</code> until you have server-side state to store. Most applications |
| don't start to store server-side state until after the Home page. |
| |
| <p> |
| By default, |
| <A href="doc/ComponentReference/ActionLink.html">ActionLink</a>, |
| <A href="doc/ComponentReference/DirectLink.html">DirectLink</a> and |
| <A href="doc/ComponentReference/Form.html">Form</a> 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., |
| <code><binding name="stateful" expression="false"/></code>) to disable this check.</p> |
| |
| |
| |
| |
| </td> |
| </tr> |
| |
| |
| |
| |
| |
| </table> |
| </td> |
| </tr> |
| </table><!-- ****END BODY WRAPPER**** --><!-- ****FOOTER**** --> |
| <table width="100%" border="0" cellspacing="0" cellpadding="0"> |
| <tr bgcolor="#8e9cd1"> |
| <td> |
| </td> |
| </tr> |
| <tr bgcolor="#4b5887"> |
| <td height="47"> |
| <IMG src="images/spacer.gif"> |
| </td> |
| </tr> |
| <tr bgcolor="#333333"> |
| <td height="65"> |
| <table width="724" border="0" cellspacing="0" cellpadding="3" bgcolor="#000000"> |
| <tr height="65"> |
| <td width="654" align="right" valign="bottom" class="clsFooter">© 2003 Apache Software Foundation. |
| All rights reserved. |
| </td> |
| <td width="70"> |
| </td> |
| </tr> |
| </table> |
| </td> |
| </tr> |
| <tr bgcolor="#333333"> |
| <td> |
| <table width="724" border="0" cellspacing="0" cellpadding="3" bgcolor="#000000"> |
| <tr height="65"> |
| <td height="200" width="654"> |
| </td> |
| <td width="70"> |
| </td> |
| </tr> |
| </table> |
| </td> |
| </tr> |
| </table><!-- ****END FOOTER**** --> |
| </body> |
| </html> |
| |