A Bean information class implements the BeanInfo interface. See Chapter 8 of the JavaBeans API Specification for an introspection, design pattern, and BeanInfo discussion. Properties are a Bean's appearance and behavior attributes that can be changed at design time. Properties are exposed to builder tools by design patterns or a BeanInfo class. See Chapter 7 of the JavaBeans API Specification for a complete property discussion.
Beans expose properties so they can be customized at design time.
By using property editors, or by using more sophisticated Bean customizers. See Chapter 9 of the JavaBeans API Specification for a customization discussion. Beans use events to communicate with other Beans. See Chapter 6 of the JavaBeans API Specification for a complete event discussion. Persistence enables Beans to save their state, and restore that state later.