Tapestry is an open-source framework for creating dynamic, robust, highly scalable web applications in Java. Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server.
Tapestry divides a web application into a set of pages, each constructed from components. This provides a consistent structure, allowing the Tapestry framework to assume responsibility for key concerns such as URL construction and dispatch, persistent state storage on the client or on the server, user input validation, localization/internationalization, and exception reporting. Developing Tapestry applications involves creating HTML templates using plain HTML, and combining the templates with small amounts of Java code using (optional) XML descriptor files. In Tapestry, you create your application in terms of objects, and the methods and properties of those objects -- and specifically not in terms of URLs and query parameters. Tapestry brings true object oriented development to Java web applications.
Tapestry is specifically designed to make creating new components very easy, as this is a routine approach when building applications. The distribution includes over fifty components, ranging from simple output components all the way up to complex data grids and tree navigators.
Tapestry is architected to scale from tiny applications all the way up to massive applications consisting of hundreds of individual pages, developed by large, diverse teams. Tapestry easily integrates with any kind of back-end, including J2EE, HiveMind andSpring .
Tapestry is released under the Apache Software License 2.0.
Tapestry is organized around four key principles:
These four principles drive the meta-principle: The simplest choice should be the correct choice.
The decisions you make early in a project should not come back later to haunt you.
We have found that a component approach to web development is the best way of realizing these principles. Structuring the framework and your application around components makes it possible to move all the boring plumbing code out of your application and into the framework. You write less code, you write simpler code, sometimes you write no code. Tapestry picks up the slack.
Additional libraries of Tapestry components by third parties.
| BeanForm | All-in-one, flexible bean editor. |
| Sotacs | Some moreTapestryComponents, including menus, Ajax text fields and dynamic images |
| Tacos | Suite of Ajax-enabled components. |
| Tapestry Menu Component | Tapestry version ofJSCookMenu . |
| TapFX | A set of dynamic, skinnable, DHTML enabled, client-side state preserving web components. |
| Tassel | Tapestry Searchable Selection of Components -- Searchable index of Tapestry components |
| Tapestry Bayeux | A collection of Java Web Components for tapestry 4.X. |
| tapesty5-components | Collection of components for Tapestry 5, hosted at Google Code. |
More Tapestry 5 component libraries are listed on the Tapestry 5 project page .
This section lists common Tapestry extensions that have been created by third parties.
| AppFuse | "Kickstart" application development that pre-integrates Tapestry with Spring, Hibernate and several other libraries. |
| Cognition | Eclipse plugin that enables graphical creation of database-driven Tapestry applications. |
| Honeycomb | Hibernate integration, supports transaction-per-request and transaction-per-conversation. |
| Jumpstart | Like AppFuse, but specific to Tapestry: a CRUD application outline waiting to be filled in with your own domain classes |
| tapestry-spring | Easy integration with Spring; inject Spring beans directly into pages. |
| TapDoc | Generate component documentation automatically. |
| Tapernate | Hibernate integration; manages transactions and persistent entity objects. |
| tapestry-acegi | Integration with the Acegi security framework. |
| tapestry-flash | Short term property storage modelled on Rail's "flash". |
| tapestry-prop | Non-reflective property access; fast but limited replacement for "ognl:". |
| tapestry-testng | Base classes for testing Tapestry components with JDK 1.5. |
| Trails | Domain driven application development environment, modeled on Rails and Naked Objects. |
These open-source, third party extensions allow you to more easily develop your Tapestry applications using popular IDEs.
| Eclipse | eZing Builder | Visual editor for HTML with Tapestry extensions. |
| Spindle | Integrated editing and simple refactoring. Stable version is Tapestry 3 only. | |
| Palette | Extends Spindle with palette-based drag and drop editing. | |
| IDEA | TapIDEA | Wizards, highlighting, auto-completion and navigation.Supports Tapestry 5. |
| HandyTapestry | Helpful completions and navigations in the HTML template, and a Create Tapestry component wizard. For Tapestry 4. | |
| NetBeans | nbtapestrysupport | Wizards for creating new Tapestry files and elements within files. |