In computing based on the Java Platform, JavaBeans is a technology developed by Sun Microsystems and released in 1996, as part of JDK 1.1. The 'beans' of JavaBeans are classes that encapsulate one or more objects into a single standardized object (the bean). This standardization allows the beans to be handled in a more generic fashion, allowing easier code reuse and introspection. This in turn allows the beans to be treated as software components, and to be manipulated visually by editors and IDEs without needing any initial configuration, or to know any internal implementation details. As part of the standardization, all beans must be serializable, have a zero-argument constructor, and allow access to properties using getter and setter methods. Features Introspection Introspection is a process of analyzing a Bean to determine its capabilities. This is an essential feature of the Java Beans specification because it allows another application, such as a design tool, to obtain information about a component. Properties A property is a subset of a Bean's state. The values assigned to the properties determine the behaviour and appearance of that component. They are set through a setter method and can be obtained by a getter method. Customization A customizer can provide a step-by-step guide that the process must follow to use the component in a specific context. Events Beans may interact with the EventObject EventListener model. Persistence Persistence is the ability to save the current state of a Bean, including the values of a Bean's properties and instance variables, to nonvolatile storage and to retrieve them at a later time. Methods A Bean should use accessor methods to encapsulate the properties. A Bean can provide other methods for business logic not related to the access to the properties. Advantages The properties, events, and methods of a bean can be exposed to another application. A bean may register to receive events from other objects and can generate events that are sent to those other objects. Auxiliary software can be provided to help configure a bean. The configuration settings of a bean can be saved to persistent storage and restored. Disadvantages A class with a zero-argument constructor is subject to being instantiated in an invalid state. If such a class is instantiated manually by a developer (rather than automatically by some kind of framework), the developer might not realize that the class has been improperly instantiated. The compiler cannot detect