There are two basic types of components: those that use an HTML template, and those that don't.
Nearly all of the base components provided with the Tapestry framework don't
use templates. They inherit from the class
AbstractComponent. Such
components must implement the protected renderComponent() method.
Components that use templates inherit from a subclass of
AbstractComponent:
BaseComponent. They should leave the renderComponent()
method alone.
In some cases, a new component can be written just by combining existing components
(this often involves using inherited bindings). Such a codeless
component will consist of just a specification and an HTML
template and will use the BaseComponent class without subclassing. This
is even more possible when using helper beans.