<!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 >&nbsp;<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.&nbsp; 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.&nbsp; In the next release, 2.3, Tapestry will finally get 
            JSP interoperation.&nbsp; 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>&lt;binding name="stateful" expression="false"/&gt;</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>&nbsp;
		</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">&copy; 2003 Apache Software Foundation.
					All rights reserved.
					</td>
					<td width="70">&nbsp;
					</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">&nbsp;
					</td>
					<td width="70">&nbsp;
					</td>
				</tr>
			</table>
		</td>
	</tr>
</table><!-- ****END FOOTER**** -->
</body>
</html>

