|
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.
The many new features of release 2.4 mean that Tapestry is not
only the most powerful web application framework available, it is
also the fastest and easiest to adopt, regardless of whether your
background is Java, Perl, XML or PHP!
|
|
|
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.
Starting with release 2.4, Tapestry includes a simple JSP tag library
to allow JSP pages to create links to Tapestry pages.
|
|
|
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
org.apache.tapestry.disable-caching set to true, i.e.,
-Dorg.apache.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.
|
|
|
Does Tapestry work with other other application servers
besides
JBoss?
Of course! JBoss is free and convienient for the
turn-key demonstrations. You can download Tapestry and JBoss
and have a real J2EE application running in about a minute!
The scripts that configure JBoss are sensitive to the particular
release of JBoss, it must be release 3.0.4.
However, Tapestry
applications are 100% container agnostic ... Tapestry doesn't care
what servlet container it is used with and does not even need an EJB container.
|
|
|
What is "line precise error reporting"?
Tapestry applications are built from templates and specifications.
It's natural that when these templates and specifications are read, any syntax
errors
are reported, and the precise file and location is identified.
Tapestry goes far beyond that! It always relates runtime objects
back to the corresponding files so that even runtime errors report the
file and location.
Tapestry exception report (click for larger image).
For example; say you bind a parameter of a component that expects
a non-null value, but the value ends up being null anyway, due to
a bug in your code or your specification.
Tapestry can't tell, until runtime,
that you made a mistake ... but when it does, part of the exception report
will be the line in the template or specification where you bound the component parameter.
Zap! You are sent right to the offending file to fix the problem.
Other frameworks may report syntax errors when they parse their specifications, but
after that, you are own your own: if you are lucky, you'll get a stack trace. Good luck
finding your error in that! Tapestry gives you a wealth of information when unexpected
exceptions occur, usually more than enough to pinpoint the problem
without having to restart the application inside a debugger.
|
|