Introduction

Tapestry is a component based web application framework; components, objects which implement the IComponent interface, are the fundamental building blocks of Tapestry. Additional objects, such as the the engine, IMarkupWriter and the request cycle are infrastructure. The following figure identifies the core Tapestry classes and interfaces.

Figure 3.1. Core Tapestry Classes and Interfaces

Core Tapestry Classes and Interfaces

Tapestry components can be simple or complex. They can be specific to a single application or completely generic. They can be part of an application, or they can be packaged into a component library.

All the techniques used with pages work with components as well ... pages are a specialized kind of Tapestry component. This includes specified properties (including persistent properties) and listener methods.

Components fit into the overall page rendering process because they implement the IRender interface. Components that inherit from BaseComponent will use an HTML template. Components that inherit from AbstractComponent will render output in Java code, by implementing method renderComponent().

The components provided with the framework are not special in any way: they don't have access to any special APIs or perform any special down-casts. Anything a framework component can do, can be done by your own components.