Java Beans - Freie Universität Berlin

Werbung
Java Beans
Seminar Komponentenprogrammierung
Freie Universität Berlin, WS 2004/2005
Ivo Köhler, 08. November 2004
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
2
Was sind Java Beans?
“A Java Bean is a reusable software component that can
be manipulated visually in a builder tool.”
[sun97]
•
•
•
•
Komponenten die über Zugriffsklassen verfügen
Bestimmte Namenskonventionen einhalten
Über Dialogboxen manipulierbar sind
Unterstützen neue visuelle Programmiermethoden
– Können durch IDE visuell in Programm eingebunden werden
– Im Idealfall ohne eine Zeile Code zu schreiben
Seminar Komponentenprogrammierung, Ivo Köhler
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)
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
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
public
public
public
void set<PropertyName>(<PropertyType>[] value);
<PropertyType>[] get<PropertyName>();
void set<PropertyName>(int index, <PropertyType> value);
<PropertyType> get<PropertyName>(int index);
Seminar Komponentenprogrammierung, Ivo Köhler
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);
Seminar Komponentenprogrammierung, Ivo Köhler
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);
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
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 object
Event source
Event listener
Event listener
Event listener
Seminar Komponentenprogrammierung, Ivo Köhler
17
Mechanismen (..)
• Events (..)
– Typischer Anwendungsfall: Bound properties
Registrierung
Callback
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
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)
Seminar Komponentenprogrammierung, Ivo Köhler
20
Tools
• BeanBox v1.0
• Im Beans Development Kit (BDK) bereits enthalten
• Sehr guter leichter Container zum Testen kleinerer
Beans
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
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
Seminar Komponentenprogrammierung, Ivo Köhler
24
ENDE
Seminar Komponentenprogrammierung, Ivo Köhler
25
Herunterladen