Notizen
Bildschirmpräsentation
Gliederung
1
Komponententechnologie
  • Am Beispiel von Java Beans und Enterprise Java Beans
2
Themen
  • 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
Verwendete Abkürzungen
  • 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
Was ist eine Komponente ?
  • Eine Komponente ist
    • ein Softwarebaustein
    • mit genau spezifizierten Schnittstellen,
    • unabhängig und wiederverwendbar,
    • mit anderen Komponenten integrierbar,
    • jedoch KEINE selbstständige Anwendung.
5
Wozu dienen Komponenten ?
  • Komponenten stellen den Anwendungen Funktionalität über Schnittstellen zur Verfügung.
  • Anwendungen werden aus Komponenten aufgebaut („komponiert“).


6
Beispiele für Komponentenmodelle
  • (D)COM
    • Microsoft, Component Object Model
  • JavaBeans, Enterprise Java Beans
  • CORBA
    • Component Object Request Broker Architecture

7
Java Beans
  • 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
Beans Komponententypen
  • Sichtbare Komponente
    • GUI Elemente
  • Unsichtbare Komponente
    • Netzwerkdienst
    • Plausibilitätsprüfungen
9
Eigenschaften einer JavaBean
  • 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
Beans brauchen Ereignisse
  • 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
Beans verwenden Eigenschaften
  • normal properties
    • Einzelwert
  • indexed properties
    • Menge von Werten
  • 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
Visuelle Programmierung
  • 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
Beans Methoden
  • „Entwurfsmuster“
  • public void set<PropertyName>(<PropertyType> value)
  • public <PropertyType>  get<PropertyName>()
  • public boolean is<PropertyName>()
14
Introspection
  • 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
Persistenz
  • beruht auf Objektserialisierung und
  • ermöglicht über Java Serialization die Speicherung der Daten und Namen von Klassen.
16
Weitergabe von JavaBeans
  • erfolgt über jar Dateien,
  • die alle notwendigen Dateien, Klassen, Hilfsklassen etc. enthalten.
  • Eine Inhaltsbeschreibung über eine MANIFEST.MF Datei optional möglich.
17
Java Beans und das Komponentenparadigma
  • Standardisierte Schnittstelle
    • get, set Methoden ü
  • Sinnvolle Funktionalität
    • Entwickler abhängig ?
  • Trennung Schnittstelle / Implementierung
    • Interface Spezifikation ü
  • Umgebungsunabhängigkeit
    • Java (nur !) ü




18
JavaBeans und das Komponentenparadigma
  • Ortstransparenz
    • durch Klassennamenkonzept ü
  • Selbstbeschreibung
    • implizit über Reflection API, BeanInfo ü
  • Nutzbarkeit
    • Java, Manifestdatei ü
  • Integration- und Kompositionsfähigkeit
    • Einsatz in anderen Beans ü


19
Enterprise Java Beans
  • 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
EJB-Architektur
21
EJB (J2EE) Server
  • 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
EJB Container
  • 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
EJB Container Aufgaben
  • Kontrolle des Lebenszyklus der Bean
  • Instanzenpooling
  • Verteilung
  • Namens- und Verzeichnisdienst
  • Persistenz
  • Transaktionen
  • Sicherheit
24
Session Beans
  • 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
Entity Beans
  • 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
Bestandteile einer EJB I
  • 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
Bestandteile einer EJB II
  • 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
Verteilung von EJBs
  • 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
EJB und Komponentenparadigma I
  • Standardisierte Schnittstelle
    • Home, Remote Interface ü
  • Pflege, Wartung ü
  • Sinnvolle Funktionalität
    • Entwickler abhängig ?
  • Umgebungsunabhängigkeit
    • Java (nur !) ü



30
EJB-Architektur und Komponentenparadigma II
  • Ortstransparenz
    • Durch Namens- und Verzeichnisdienst ü
  • Selbstbeschreibung
    • Reflection API, Homefunktionalität ü
  • Nutzbarkeit
    • Java, Installation, Deployment-Deskriptor ü
  • Integration- und Kompositionsfähigkeit
    • Aggregate ü


31
Java Beans vs. Java Enterprise Beans
32
Was zeigt die Praxis?
  • 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 !