Java Beans Seminar Komponentenprogrammierung Freie Universität Berlin, WS 2004/2005 Ivo Köhler, 08. November 2004 1
Agenda Was sind Java Beans? Wie funktionieren Java Beans? Objekte vs. Komponenten Mechanismen von Java Beans Methoden Properties Introspection Persistence Events Packaging Vor- und Nachteile Tools - Beispiele Quellen 2
Was sind Java Beans? A Java Bean is a reusable software component that can be manipulated visually in a builder tool. Komponenten die über Zugriffsklassen verfügen Bestimmte Namenskonventionen einhalten Über Dialogboxen manipulierbar sind Unterstützen neue visuelle Programmiermethoden [sun97] Können durch IDE visuell in Programm eingebunden werden Im Idealfall ohne eine Zeile Code zu schreiben 3
Was sind Java Beans? (..) Meist kleine lightweight Komponenten Sichtbare GUI-Elemente (Buttons, Checkboxen, ) Nicht sichtbare Elemente (Datenbankzugriffe, Datenübertragungsprozesse) Aber auch komplexerer Beans denkbar (ganze Applikationen) Zusammenfassung vieler Beans zu Compound Documents Sollen kompakt, leicht zu erstellen und zu benutzen sein Sollen völlige Portabilität gewährleisten (im Gegensatz zum Komponentenmodell von Microsoft: ActiveX) 4
Wie funktionieren Java Beans? Java Beans basieren ausschließlich auf Java Beans bieten ihre Funktionalität (Methoden, Properties, Events) an Builder-Tools können sie so visuell für die Verwendung einbinden (z.b. in einer Tool-Box) Dies geschieht über Entwurfsmuster (patterns) und Namenskonventionen 5
Objekte vs. Komponenten Objektorientierte Sicht: Wiederverwendung wird durch Vererbungen realisiert Entwickler muss den fremden Code verstehen und Schnittstellen kennen, um Objekte wieder zu verwenden White-Box-Reuse Objekt-Code muss zugänglich sein 6
Objekte vs. Komponenten (..) Komponentenorientierte Sicht: Wiederverwendung durch Black-Box-Reuse Zugriff erfolgt nur über Schnittstellen Implementierung der Komponente ist unwichtig Black-Box-Reuse Objekt-Code muss nicht zugänglich sein 7
Agenda Was sind Java Beans? Wie funktionieren Java Beans? Objekte vs. Komponenten Mechanismen von Java Beans Methoden Properties Introspection Persistence Events Packaging Vor- und Nachteile Tools Quellen 8
Mechanismen von Java Beans Methoden Teile des Programmcodes Können durch Methodennamen aufgerufen werden Properties Sind die Statusvariablen (Attribute) der Beans Beeinflussen das Erscheinungsbild und das Verhalten der Komponente Können über Zugriffsmethoden verändert werden Primitive aber auch komplexe Datentypen 9
Mechanismen (..) Properties (..) Die Standart Signaturen der Zugriffsmethoden: public void set<propertyname>(<propertytype> value); public <PropertyType> get<propertyname>(); Indexed properties Indizierte Eigenschaften ermöglichen mehrere Attribute gleichzeitig zu manipulieren public void set<propertyname>(<propertytype>[] value); public <PropertyType>[] get<propertyname>(); public void set<propertyname>(int index, <PropertyType> value); public <PropertyType> get<propertyname>(int index); 10
Mechanismen (..) Bound properties Durch gebundene Eigenschaften können bei einer Manipulation andere Komponenten informiert werden Interessierte Komponenten müssen sich dazu vorher durch das Java-Listener-Konzept registrieren public void addpropertychangelistener(propertychangelistener p); public void removepropertychangelistener(propertychangelistener p); 11
Mechanismen (..) Constrained properties Nicht nur die Bean kann eine Attributänderung validieren, sondern es können auch registrierte Zuhörer um Einwände (Veto s) befragt werden public <PropertyType> get<propertyname>(); public void set<propertyname>(<propertytype> value) throws java.beans.propertyvetoexception; Objekte die an der Gültigkeitsprüfung mitwirken wollen: public void addvetoablechangelistener(vetoablechangelistener p); public void removevetoablechangelistener(vetoablechangelistener p); 12
Mechanismen (..) Introspection Ermöglicht das Erkunden von: Methoden, Properties und Events einer Bean Klassen- oder Methodenbeschreibungen können so oft vermieden werden Introspection erfolgt durch: Die Reflection API (Methoden und Properties erfragen) BeanInfo-Klassen Oder eine Kombination daraus Builder Tools können so selbständig Beans untersuchen und dem Entwickler zur Verfügung stellen 13
Mechanismen (..) Reflection Wird vom Entwickler die Namensgebung eingehalten, kann die Bean erkundet werden package java.lang.reflect Will dies der Entwickler nicht, oder ist die Bean zu komplex kommt die BeanInfo-Schnittstelle zum Einsatz BeanInfo-Schnittstelle Zusätzliche Klasse, in der alle Informationen stehen Name der beschreibenden Klasse <MyBean>BeanInfo In dieser Klasse werden alle Leistungsmerkmale der Bean in einem FeatureDescriptor beschrieben 14
Mechanismen (..) BeanInfo-Schnittstelle (..) <<interface>> BeanInfo +geticon(iconkind:int): Image +getbeandescriptor(): BeanDescriptor +getpropertydescriptor(): PropertyDescriptor[] +getmethoddescriptor(): MethodDescriptor[] +geteventsetdescriptor(): EventSetDescriptor[] BeanDescriptor SimpleBeanInfo PropertyDescriptor Object FeatureDescriptor EventSetDescriptor MethodDescriptor ParameterDescriptor 15
Mechanismen (..) Persistence Abspeichern und Wiederherstellen eines Zustandes einer Komponente über die Laufzeit hinweg Dies kann durch Serialisierungsmechanismen geschehen, wenn die Schnittstelle java.io.serialization implementiert wurde Es entstehen hierbei neue Probleme: Versionierung Kompatibilität mit älteren Versionen der Bean 16
Mechanismen (..) Events Java-Eventmodell vollständig implementiert Events der Java Beans beruhen auf Callback-Mechanismus Objekte die an Events interessiert sind, müssen sich bei der entsprechenden Bean anmelden (als Listener) Wird Event aufgerufen, werden alle registrierten Listener informiert Event source Event object Event listener Event listener Event listener 17
Mechanismen (..) Events (..) Typischer Anwendungsfall: Bound properties Registrierung Callback 18
Mechanismen (..) Packaging Verpacken von Java Beans zu einem kompakten Format Typischerweise in ein.jar Archiv Zusätzlich eine Manifest-Datei (.mf) die den Inhalt näher beschreibt Manifest-Version: 1.0 Name: <MyFolder>/<MySubfolder>/MyBean Java-Bean: True Digest-Algorithms: MD5 MD5-Digest: UQGuRXuyzDi0KVg4PqKP7w== Name: <MyFolder>/<MySubfolder2>/picture.gif Name: <MyFolder>/<MySubfolder2>/picture2.gif jar cfm MyBean.jar MyBean.mf MyBean.class 19
Vor- und Nachteile von JB PRO Zeitsparende effiziente Erstellung von Software, durch visuelle Wiederverwendung alter Beans Einfaches grafisches Verbinden von Komponenten Einfach zu programmieren, basiert 100% auf Java Sprachunabhängig durch eine existierende Brücke zu anderen Technologien (z.b. ActiveX von Microsoft) CONTRA Performance, da Java eine interpretierte Sprache ist Wenige Brücken von anderen Technologien in Richtung Java Beans (z.b. Microsoft) Nur für einfache Anwendungen so schön möglich Nicht für Verteilte Systeme ( EJB) 20
Tools BeanBox v1.0 Im Beans Development Kit (BDK) bereits enthalten Sehr guter leichter Container zum Testen kleinerer Beans 21
Tools BeanBuilder v1.0beta Neue verbesserte Version der BeanBox Höhere Funktionalität Bildet die Grundlage des Java Studios, einer visuellen Entwicklungsumgebung von SUN 22
Beispiel Taschenrechner im Java Beans Komponentenmodell Entwickelt in der Vorlesung Komponentenprogrammierung und Middleware am Hasso-Plattner-Institut, Potsdam Anforderungen: Funktionsfähiger Taschenrechner mit GUI Modularität leichte Erweiterbarkeit zur Laufzeit Benutzer soll Komponenten laden und sofort verwenden können leichtes Entwickeln weiterer Beans ein Grundgerüst sollte vorhanden sein 23
Quellen Java Beans Specification, SUN Microsystems http://java.sun.com/beans [sun97] Java tutorial for Java Beans http://java.sun.com/docs/books/tutorial/javabeans/ Quinn, A. 2000 Developing Java Beans, O'Reilly & Associates, Inc. Englander, R. 1997 Java in a Nutshell, O'Reilly & Associates, Inc. Flanagan, D. 1997 24
ENDE 25