The Full Wiki

Tapestry (programming): Wikis


Note: Many of our articles have direct quotes from sources you can cite, within the Wikipedia article! This article doesn't yet, but we're working on it! See more info or our list of citable articles.


From Wikipedia, the free encyclopedia

Apache Tapestry
Apache Tapestry Logo
Developer(s) Apache Software Foundation
Stable release / May 6, 2009; 10 month(s) ago (2009-05-06)
Written in Java
Operating system Cross-platform
Development status Active
Type Web Framework
License Apache License 2.0

Tapestry is an object-oriented Java web application framework to implement applications in accordance with the model-view-controller design pattern. Tapestry was created by Howard Lewis Ship independently, and was adopted by the Apache Software Foundation. Tapestry emphasizes simplicity, ease of use, and aims to avoid forcing programmers to create enormous blocks of "glue code". Tapestry uses a modular approach to web development, by having strong binding between user interface components (objects) on the web page and their corresponding Java classes. This component-based architecture borrows many ideas from WebObjects[1].


Tapestry 4

The current stable Tapestry release is version Version 4 and below are relatively similar, whereas version 5 contains substantial changes.

Tapestry 4 web applications are broken down into pages and components. Pages dictate component layout, whereas components dictate functionality. This approach separates complex applications into easily manageable snippets of code which handle user interactions, business logic, and persistent data. Components are broken down further into core and supplemental types. Core components are the basic building blocks to the application, such as form validation, interface assets, or persistent objects. Supplemental components define how a group of any core components may interact with other in the group.

Component templates in Tapestry are XHTML files. Typically an XML file defines the mapping between Java classes and the XHTML objects they control. The communication between the backend Java and frontend (web application programming) XHTML objects is handled through OGNL. The code is marked up differently from the typical mechanism used by PHP, ASP, and JSP, which use special tags to enclose template variables and code.

Tapestry 5

Tapestry version 5 began development shortly after version 4 was released. The Tapestry developers had realized that the original architecture, based on inheritance from base classes, made it difficult to enhance the framework without breaking backwards compatibility on each new release. Also, it would not solve many problems plaguing web developers using its framework. A new approach (and an entirely new code base), centered on Plain Old Java Objects, annotations and naming conventions, and runtime bytecode enhancement was undertaken. The annotations and naming conventions entirely replace the XML descriptor files of prior versions. Additionally, the need to recompile, archive, deploy, and restart their servlet on every code change was eliminated, a process called live class reloading. All of these make Tapestry 5 extremely concise.

Version 5 bundles the Prototype and Scriptaculous Javascript frameworks, along with a Tapestry-specific library, so as to support Ajax operations as first-class citizens.

Tapestry 5.1 improves performance and reduces memory consumption and adds other performance related features such as automatic GZIP compression and JavaScript library aggregation, but is still backwards compatible to Tapestry 5. Tapestry 5.2 integrated the JSR 303 (Bean Validation) specification into its validation mechanism.[2]

Related projects

Trails Framework is based on Tapestry 4.

Tynamo Framework aka Trails 2 is based on Tapestry 5.


  1. ^ Tapestry in Action - Preface by Howard Lewis Ship
  2. ^ "Tapestry and JSR-303 Bean Validation API". 2010-01-04. Retrieved 2010-03-13. 


External links



Got something to say? Make a comment.
Your name
Your email address