|
1
|
- Am Beispiel von Java Beans und Enterprise Java Beans
|
|
2
|
- Was versteht man unter Komponententechnologie ?
- Was sind Java Beans und Enterprise Java Beans ?
- Sind Java Beans und Enterprise Java Beans echte Komponenten ?
- Was zeigt die Praxis ?
|
|
3
|
- AWT Abstract Windowing Toolkit
- BDK Bean Development Kit
- EJB Enterprise Java Beans
- JB Java Beans
- JDBC Java Database Connectivity
- JDK Java Development Kit
- JNDI Java Naming and Directory Interface
- JVM Java Virtual Machine
|
|
4
|
- Eine Komponente ist
- ein Softwarebaustein
- mit genau spezifizierten Schnittstellen,
- unabhängig und wiederverwendbar,
- mit anderen Komponenten integrierbar,
- jedoch KEINE selbstständige Anwendung.
|
|
5
|
- Komponenten stellen den Anwendungen Funktionalität über Schnittstellen
zur Verfügung.
- Anwendungen werden aus Komponenten aufgebaut („komponiert“).
|
|
6
|
- (D)COM
- Microsoft, Component Object Model
- JavaBeans, Enterprise Java Beans
- CORBA
- Component Object Request Broker Architecture
|
|
7
|
- basieren auf der JavaBeans Spezifikation von Sun Microsystems, 1997
- sind definiert als:
"wiederverwendbare Software-Komponenten, die mit einem Builder-Tool
(zur Designzeit) visuell manipuliert werden können",
- werden meist auf dem Clientrechner ausgeführt, müssen aber nicht !
|
|
8
|
- Sichtbare Komponente
- Unsichtbare Komponente
- Netzwerkdienst
- Plausibilitätsprüfungen
|
|
9
|
- Bean enthält eine öffentliche Schnittstelle,
- ist analysierbar,
- ist individuell anpassbar und
- weist die Fähigkeit zur Persistenz (durch Objektserialisierung) auf und
- wird durch ein Objekt repräsentiert.
|
|
10
|
- Ereignisse ermöglichen die Kommunikation zwischen Komponenten (Beans).
- senden Ereignisse (Events), um registrierte Listener (andere Beans)
über Werteänderungen zu
informieren,
- können auf Ereignisse anderer Beans reagieren, für die sie sich
registriert hat
|
|
11
|
- normal properties
- indexed properties
- bound properties
- bei Werteänderung Verständigung mittels eines Ereignisses an
registrierte Empfänger
- constraint properties
- Wie bound properties, nur können die Empfänger die Werteänderung
ablehnen
|
|
12
|
- Wird ermöglicht durch "Editoren für Eigenschaften"
- für Standardtypen vorgefertigte Editoren einzusetzen,
- für spezielle Typen können eigene Editoren erstellt werden (PropertyEditor), die neben
Werteeinstellungen auch Methoden aufrufen können.
|
|
13
|
- „Entwurfsmuster“
- public void set<PropertyName>(<PropertyType> value)
- public <PropertyType> get<PropertyName>()
- public boolean is<PropertyName>()
|
|
14
|
- ermöglicht die Definition von Metadaten über Ereignisse, Eigenschaften
und Methoden
- und erweitert die Möglichkeiten des Java Reflection API.
- Introspection ermöglicht weitere Informationen über eine eigene Klasse
<BeanName>BeanInfo zugänglich zu machen.
|
|
15
|
- beruht auf Objektserialisierung und
- ermöglicht über Java Serialization die Speicherung der Daten und Namen
von Klassen.
|
|
16
|
- erfolgt über jar Dateien,
- die alle notwendigen Dateien, Klassen, Hilfsklassen etc. enthalten.
- Eine Inhaltsbeschreibung über eine MANIFEST.MF Datei optional möglich.
|
|
17
|
- Standardisierte Schnittstelle
- Sinnvolle Funktionalität
- Trennung Schnittstelle / Implementierung
- Interface Spezifikation ü
- Umgebungsunabhängigkeit
|
|
18
|
- Ortstransparenz
- durch Klassennamenkonzept ü
- Selbstbeschreibung
- implizit über Reflection API, BeanInfo ü
- Nutzbarkeit
- Integration- und Kompositionsfähigkeit
- Einsatz in anderen Beans ü
|
|
19
|
- sind ein Komponentenmodell zur Entwicklung und Distribution Server-seitiger
Java Komponenten.
- Sie implementieren Anwendungslogik und
- kommunizieren ausschließlich über den Kontext mit dem Container, der
wiederum die Kommunikation mit der Außenwelt ermöglicht.
|
|
20
|
|
|
21
|
- ist die Laufzeitumgebung für verschiedene Container,
- speziell auch für EJB Container.
- Seine Aufgaben sind:
- Thread/Prozessmanagement
- Clustering, Lastverteilung
- Ausfallsicherheit
- Namens- und Verzeichnisdienst
- Zugriffsunterstützung auf Betriebssystemressourcen
|
|
22
|
- ist die Laufzeitumgebung für verschiedene Komponenten und
- die zentrale Instanz im EJB-Komponentenmodell.
- Er ermöglicht einer EJB API-Unterstützung für folgende Dienste:
- API für JDK
- API für EJB Spezifikation
- UserTransactions
- JDBC API
- Java Mail
|
|
23
|
- Kontrolle des Lebenszyklus der Bean
- Instanzenpooling
- Verteilung
- Namens- und Verzeichnisdienst
- Persistenz
- Transaktionen
- Sicherheit
|
|
24
|
- modellieren Abläufe, Vorgänge,
- sind serverseitige Erweiterungen eines Clients,
- sind dessen private Ressource mit exklusivem Zugriff,
- operieren unter anderem auf Entity- Beans und
- sind nicht persistent.
|
|
25
|
- sind mit "Daten" assoziiert, die sich in einem dauerhaften
Speicher (etwa einer Datenbank) befinden;
- können von mehreren Clients benützt werden und
- sind persistent.
|
|
26
|
- Remote-Interface
- repräsentiert Funktionalität nach außen (über Methoden).
- Home-Interface
- ermöglicht das Erzeugen, Finden und Löschen einer Instanz
(„Lebenszyklusfunktionen“).
- Bean-Klasse
- implementiert die Methoden des Home- und Remote Interfaces.
|
|
27
|
- Primärschlüssel
- ist nur für Entity–Beans relevant und
- ermöglicht die eindeutige Identifikation der Bean.
- Deployment-Deskriptor beschreibt in XML
- vor allem nicht im Code enthaltene Informationen,
- externe Abhängigkeiten zu anderen Beans und Datenbanken,
- wie Beans zu Aggregaten zusammengefasst werden.
|
|
28
|
- erfolgt wieder über jar-Dateien
- Home-, Remote Interface, Bean Klassen, Primärschlüsselklassen,
Deployment-Deskriptor
- und wird über ein Installationswerkzeug unterstützt, das die
- die Implementierung des Home- und Remote-Interfaces liefert .
|
|
29
|
- Standardisierte Schnittstelle
- Pflege, Wartung ü
- Sinnvolle Funktionalität
- Umgebungsunabhängigkeit
|
|
30
|
- Ortstransparenz
- Durch Namens- und Verzeichnisdienst ü
- Selbstbeschreibung
- Reflection API, Homefunktionalität ü
- Nutzbarkeit
- Java, Installation, Deployment-Deskriptor ü
- Integration- und Kompositionsfähigkeit
|
|
31
|
|
|
32
|
- Performanz
- in den meisten Fällen das A und O
- Java ist hier einfach (noch) NICHT konkurrenzfähig.
- Nur für Anwendungen mit relativ wenig Rechenaufwand; dieser wird oft
„nach außen“ verlagert.
- EJB (JB) tritt nur als "Wrapper für andere Anwendungen" auf
?!
- Alternativen
- Sauberer komponentenbasierter Entwurf
- C++, Perl !
|