A BeanInfo class explicitly lists those Bean features that are to be exposed to application builder tools. Chapter 8 of the JavaBeans API Specification discusses introspection, design patterns, and BeanInfo objects. Properties are a Bean's appearance and behavior characteristics that can be changed at design time. Builder tools introspect on a Bean to discover its properties, and expose those properties for manipulation. Chapter 7 of the JavaBeans API Specification discusses properties.
Beans expose properties so they can be customized at design time.
By using property editors, or by using more sophisticated Bean customizers. Chapter 9 of the JavaBeans API Specification discusses Bean customization. Beans use events to communicate with other Beans. Chapter 6 of the JavaBeans API Specification discusses events. Persistence enables Beans to save and restore their state.