The first beta release of Tapestry 4.0 is now available. Tapestry is a component based web application framework that provides lots of functionality with minimal Java coding, and creates an environment that supports high levels of reuse. Tapestry 4.0 represents a significant advance over Tapestry 3.0. A few of our favorite changes in 4.0:
- The new 4.0 specification DTDs have been simplified.
- The syntax used for binding parameters inside an HTML template and inside an XML specification is now consistent. Both make use of the binding prefixes.
- "Friendly" URLs (that is, URLs that pack more information into the path and less into query parameters) are built in. This makes it easy to divide your application across many folders (reducing clutter), and leverage J2EE declarative security along the way.
- Listener methods are much easier and more flexible; listener parameters in the URL are automatically mapped to listener method parameters, and listener methods can return the page name or page instance to activate.
- Component parameters now just work, without having to worry about "direction".
- Applications can now have a global message catalog, in addition to per-page and per-component message catalogs. Messages not found in the component message catalog are searched for in the application catalog.
- Full, native support for developing JSR-168 Portlets has been added.
- Tapestry 4.0 makes much less use of reflection and OGNL than Tapestry 3.0; partly because there are many new binding prefixes and largely because of how parameters are now implemented.
- HiveMind services and Spring beans to be directly injected into page and component classes.
- Tapestry 4.0 includes optional JDK 1.5 annotation support (but Tapestry still works with JDK 1.3).
- Tapestry 4.0 debuts a new and much more sophisticated user input validation subsystem. Thanks Paul!
- Line precise error reporting can now display the contents of files containing errors.
- Forms can now be canceled, bypassing client-side validation logic, and invoking an alternate listener on the server-side.
- You are no longer limited to just Global and Visit; you can have as many application state objects as you like.
- The use of HiveMind under the covers means that Tapestry can be easily customized to fit your needs.
- Page properties can now be persisted on the client, as well as in the session.
- Components and component parameters can now be marked as deprecated. Component parameters may have aliases (used when renaming a parameter).
The complete list of changes is almost too numerous to enumerate. Suffice to say, everything is about getting more bang for the buck; reducing the amount of Java code, reducing the complexity of templates, and simplifying (or eliminating) XML files.
Tapestry is distributed as a combined binary/source distribution, and a seperate documentation distribution.