A bean is any Java object that follows certain coding conventions.
The fields of a bean are called properties. These must have public getter and setter methods.
A bound property notifies registered listeners when it changes.
A constrained property is a bound property that allows listeners the option of vetoing (preventing) a proposed change.
Bean is an abstract class that provides support for bound and constrained properties:
An implementation: Bean.java