The JavaBeans framework is a way of manipulating Java objects when their exact type is not known. The ability to make objects work together, when their exact type is not known, is very powerful. It's an example of the kind of flexibility availble in a highly dynamic language like Java that is not possible in lower-level languages such as C++.

The JavaBeans framework is the basis for a number of component-based frameworks, including Java's AWT and Swing GUI libraries, as well as Tapestry. The idea is that, by following a few naming rules and coding conventions, it is possible to "plug into" a framework with new classes, classes not even written yet when the framework is created. In Tapestry terms, this is used to allow the creation of new Tapestry components.

Any Java object can act as a JavaBean; it just has to follow certain naming conventions (discussed in the next section). In cases where a framework needs to create new instances of a class, such as when Tapestry creates a new instance of a component, the Java class must implement a public, no arguments constructor (it may implement additional constructors as well).

The Java Reflection API allows Tapestry to access the methods, attributes and constructors of a class.