JavaBeans sindSoftware-Komponenten für die ProgrammierspracheJava. JavaBeans entwickelten sich aus der Notwendigkeit heraus,GUI-Klassen (AWT,Swing) einfach zuinstanziieren und mittelsRMI zu übertragen. JavaBeans werden auch als Container zur Datenübertragung verwendet. Daher zeichnen sich alle JavaBeans durch folgende Eigenschaften aus:
Auf Grund dieser Eigenschaften eignen sich JavaBeans auch als Datenobjekte fürPersistenzframeworks(sieheEnterprise JavaBeans).
Eine JavaBean ist eine Java-Klasse, die einemKomponentenmodell entspricht, um automatisierten Zugriff auf ihre Eigenschaften (Membervariablen) und Operationen (Methoden) zu erlauben. Das Java-SDK stellt Anwendungsentwicklern die Bean-API (das Paketjava.beans) zur Verfügung, um beispielsweise eine Kurzbeschreibung einer Bean anzuzeigen. Das JavaBean-Komponentenmodell wurde vor allem entwickelt, um eine einheitliche API zur einfacheren Entwicklung von GUI-Buildern bereitzustellen. Beans realisieren eine verbesserte Serialisierung und damit Netzwerkfähigkeit,Wiederverwendbarkeit,Portabilität undInteroperabilität.
Eine Komponente ist nur dann eine JavaBean, wenn sie derJavaBeans API Specification entspricht, die von derJavaBeans Component Architecture spezifiziert wird.
Eine JavaBean besitzt immer einenKonstruktor ohne Parameter (Standardkonstruktor). Dies ermöglicht eine standardisierte Instanziierung, beispielsweise einerSchaltfläche:
JButtonbutton=(JButton)Class.forName("javax.swing.JButton").newInstance();
Eine Alternative dieser Instanziierung ist:
JButtonbutton=newJButton();
AlleEigenschaften einer Bean wahren dasGeheimnisprinzip(information hiding). Der Zugriff ist über spezielle Operationen möglich, die bestimmten Konventionen entsprechen müssen.
Für eine Eigenschaftfoo heißt die lesende Operation(Getter)getFoo. Bei booleschen Variablen ist alternativ auchisFoo möglich, was allgemein vorgezogen wird. Die schreibende Operation(Setter) heißtsetFoo. Indizierte Eigenschaften besitzen jeweils zwei Getter und Setter: Einen für die Gesamtheit, einen für einen bestimmten Index. Eine schreibgeschützte Eigenschaft besitzt keinen (öffentlichen) Setter.
Introspektion ist der Mechanismus, eine Bean auf ihre Eigenschaften,Ereignisse(Events) und Operationen zu analysieren. Die API bietet dabei Möglichkeiten, die eine zusätzliche Unterstützung zur Introspektion von Seiten des Bean-Entwicklers unnötig machen. Beans können perReflexion untersucht werden, wenn sie sich an die in derSpezifikation definierten Konventionen halten.
Ferner gibt es die Möglichkeit, für jede Bean eine BeanInfo-Klasse zu schreiben, die Informationen über die Bean, ihre Eigenschaften und Operationen enthält. Die Klassejava.beans.Introspector sucht erst nach expliziten Informationen und vervollständigt diese durch Reflexion.
Bei der Änderung einerBound Property (gebundene Eigenschaft) müssen Objekte über die Änderung informiert werden. BeiConstrained Properties können diese zudem einVeto einlegen. Die Bean-API stellt hierfür einEvent Delegation Model bereit.
Es können grafischeEditoren undCustomizer für bestimmteDatentypen und Beans erstellt und durch sie Eigenschaften bequem angepasst werden.
Es gibt einen Persistenzmechanismus für Beans. So können Beans beispielsweise alsXML-Dokument gespeichert werden.