Java Beans von Christian Beck-Wörner Inhalt •Was ist ein Bean •Konzept von Beans •Entwicklung eines Beans •Eigenschaften von Beans •Testumgebung: BDK Was ist ein Bean? Ein JavaBean ist eine wiederverwendbare Softwarekomponente, die man visuell in einem „builder tool“ manipulieren kann. •Beans sind Softwarekomponenten •Beans sind normale Klassen •Beans können visuell in einem „Tool“ verändert werden •Beans haben ein schizophrenes Laufzeitverhalten: Designzeitpunkt vs. Ausführungszeitpunkt Konstruktion und Verwendung von Beans Kreiert und unterhält die Beans Sucht geeignete Komponenten Anwendungsentwickler „Jbean-Entwickler“ Verwendet die Komponenten Die typischen Eigenschaften von Beans • • • • • • Introspektion (Selbstbeobachtung) Customization (Anpassung) Events (Ereignisse) Properties (Eigenschaften) Persistenz Packaging Introspektion „Builder Tools“ analysieren Beans Zum Beispiel: • Sun BDK • IBM Visual Age • Borland Jbuilder • Microsoft Visual J++ 6.0 Customization Ein Benutzer soll z.B. mit BDK das Erscheinungsbild und das Verhalten eines Beans anpassen können Für simple Beans •Tool konstruiert ein GUI property sheet •Listet die Eigenschaften auf •Bearbeitung mit Property Editor Für komplexere Beans •Wizards, führen den User durch die Customization •Separate Klasse Customization Events • Beans kommunizieren über Events • 3 Hauptbestandteile: Source, Event, Listener Register listener Event source Event Event listener Properties • Zugriff immer über Objekteigene Methoden • Um Eigenschaften zu lesen: getter Methoden public <PropertyType> get<PropertyName>; • Um Eigenschaften zu setzten: setter Methoden public void set<PropertyName>(<PropertyType> a); Persistenz • Ein Bean soll nachdem es verändert wurde seine Anpassungen speichern und später wieder laden können. • Alle Beans müssen Serialization unterstützen Design time v. run-time Designzeitpunkt • Design time Code umfangreicher Ausführungszeitpunkt • Verwendbarkeit in der erstellten Applikation Bean Development Kit BDK Enthält: • BeanBox Testumgebung • Bean-Beispiele • Quellcodeausschnitte BeanBox Hier werden die Beans aus der ToolBox platziert. ToolBox Zeigt die Palette der Beans, die der BeanBox zur Verfügung stehen Property Fenster Zeigt die Eigenschaften eines Beans, das gerade in der BeanBox ausgewählt ist und die verändert werden können Vom Java-Programm zum Bean I • 1. Schritt: serialisierbar machen • 2. Schritt: Leeren Konstruktor erstellen • 3. Schritt: Veränderbare Eigenschaften (properties) als „private“ deklarieren • 4. Schritt: „setter-“ und „getter-“ Methoden erstellen • 5. Schritt: Kosmetik • 6. Schritt: Das „manifest.tmp“ • 7. Schritt: Jar-File erzeugen Vom Java-Programm zum Bean I import java.awt.*; import java.awt.event.*; import java.io.Serializable; public class Grafik extends Canvas implements Serializable{ Vom Java-Programm zum Bean II • 1. Schritt: serialisierbar machen • 2. Schritt: Leeren Konstruktor erstellen • 3. Schritt: Veränderbare Eigenschaften (properties) als „private“ deklarieren • 4. Schritt: „setter-“ und „getter-“ Methoden erstellen • 5. Schritt: Kosmetik • 6. Schritt: Das „manifest.tmp“ • 7. Schritt: Jar-File erzeugen Vom Java-Programm zum Bean II import java.awt.*; import java.awt.event.*; import java.io.Serializable; public class Grafik extends Canvas implements Serializable{ public Grafik(){ setSize(300,300); setVisible(true); } Vom Java-Programm zum Bean III • 1. Schritt: serialisierbar machen • 2. Schritt: Leeren Konstruktor erstellen • 3. Schritt: Veränderbare Eigenschaften (properties) als „private“ deklarieren • 4. Schritt: „setter-“ und „getter-“ Methoden erstellen • 5. Schritt: Kosmetik • 6. Schritt: Das „manifest.tmp“ • 7. Schritt: Jar-File erzeugen Vom Java-Programm zum Bean III private int x=200; Vom Java-Programm zum Bean IV • 1. Schritt: serialisierbar machen • 2. Schritt: Leeren Konstruktor erstellen • 3. Schritt: Veränderbare Eigenschaften (properties) als „private“ deklarieren • 4. Schritt: „setter-“ und „getter-“ Methoden erstellen • 5. Schritt: Kosmetik • 6. Schritt: Das „manifest.tmp“ • 7. Schritt: Jar-File erzeugen Vom Java-Programm zum Bean IV Zugriff auf die als „private“ deklarierten Variablen mittels „set“- und „get“Methoden: Namenkonvention Vom Java-Programm zum Bean IV public void setX(int a){ x=a; } public int getX(){ return x; } Vom Java-Programm zum Bean V • 1. Schritt: serialisierbar machen • 2. Schritt: Leeren Konstruktor erstellen • 3. Schritt: Veränderbare Eigenschaften (properties) als „private“ deklarieren • 4. Schritt: „setter-“ und „getter-“ Methoden erstellen • 5. Schritt: Kosmetik • 6. Schritt: Das „manifest.tmp“ • 7. Schritt: Jar-File erzeugen Vom Java-Programm zum Bean V => „*BeanInfo.class“ Fügt ein Ikon zum Namen hinzu GrafikBeanInfo.java import java.beans.*; public class GrafikBeanInfo extends SimpleBeanInfo { public java.awt.Image getIcon(int iconKind) { if (iconKind == BeanInfo.ICON_COLOR_16x16) { java.awt.Image img = loadImage("Kreis16.gif"); return img; } if (iconKind == BeanInfo.ICON_COLOR_32x32) { java.awt.Image img = loadImage("Kreis32.gif"); return img; } return null; } } Vom Java-Programm zum Bean VI • 1. Schritt: serialisierbar machen • 2. Schritt: Leeren Konstruktor erstellen • 3. Schritt: Veränderbare Eigenschaften (properties) als „private“ deklarieren • 4. Schritt: „setter-“ und „getter-“ Methoden erstellen • 5. Schritt: Kosmetik • 6. Schritt: Das „manifest.tmp“ • 7. Schritt: Jar-File erzeugen Das „manifest.tmp“ Name: Grafik.class Java-Bean: True Vom Java-Programm zum Bean VII • 1. Schritt: serialisierbar machen • 2. Schritt: Leeren Konstruktor erstellen • 3. Schritt: Veränderbare Eigenschaften (properties) als „private“ deklarieren • 4. Schritt: „setter-“ und „getter-“ Methoden erstellen • 5. Schritt: Kosmetik • 6. Schritt: Das „manifest.tmp“ • 7. Schritt: Jar-File erzeugen Vom Java-Programm zum Bean VII Jar-File erzeugen: C:\java > jar cfm {name}.jar manifest.tmp *.* Quellenangaben • http://www.javabuch.de • http://www-106.ibm.com/developerworks/java/ • http://java.sun.com/docs/books/tutorial/javabeans/i ndex.html • http://java.sun.com/products/javabeans/ • JavaBean API Spezifikation • Core Java 2 Volume 2: Fourth Edition (C. Horstmann; G. Cornell)