% Diplomarbeit von Andreas Boesch
%
% Universitaet Hamburg
% Fachbereich Informatik
% Arbeitsbereich DBIS
%
% Kapitel: Weiterentwicklungen



\chapter{Entwicklungen des WWW}
\label{Kap. weiterentwicklungen}
In Kapitel~\ref{Kap. AnsatzBewert} wurde gezeigt, da"s das WWW noch nicht alle Anforderungen an verteilte Informationssysteme erf"ullen kann. In diesem Kapitel werden Entwicklungen von WWW Konzepten und Technologien vorgestellt, die einige der festgestellten Defizite ausgleichen.

In Abschnitt~\ref{htmlEntw} werden verschiedene Weiterentwicklungen und Erg"anzungen von HTML beschrieben. {\java} ist durch ihre Plattformunabh"angigkeit und die Unterst"utzung sicherer Code\-aus\-f"uhrung die zukunftstr"achtigste Programmiersprache des WWW. Weiterentwicklungen von {\java} werden in Abschnitt~\ref{javaEntw} vorgestellt. Die Basis jedes Internetinformationssystems bildet das Internet Protokoll. Ein neues Internet Protokoll bringt u.a. neue F"ahigkeiten und M"oglichkeiten f"ur das WWW ({\VAS}~\ref{IPv6}). 

\section {Entwicklungen und Erweiterungen von HTML}
\label{htmlEntw}
HTML ist neben HTTP einer der Grundbausteine des WWW. Neben dem Entwurf der Spezifikation von HTML 4.0 ({\VAS}~\ref{htmlVier}) und der  HTML Erweiterung {\msql} ({\VAS}~\ref{msql}) wird in diesem Abschnitt die {\em Extensible Markup Language} (XML) ({\VAS}~\ref{xml}) vorgestellt.

\subsection{{\html} 4.0}
\label{htmlVier}
HTML 4.0 ist ein Vorschlag des WWW Konsortiums (W3C) zur Standardisierung von HTML in einer neuen Version \cite{HTMLVier}. Dies ist erforderlich, um das Voranschreiten der Nutzung propriet"arer HTML Konstrukte durch die {\brow}hersteller zu verhindern. Viele der "Anderungen sind lediglich Festschreibungen von bereits von {\net} oder {\ms} in ihren {\brow}n implementierten propriet"aren Erweiterungen von HTML. 

HTML 4.0 bietet u.a. folgende neue F"ahigkeiten bzw. Erweiterungen:

\begin{description}
\item[Objektintegration:] Das Schl"usselwort {\em Object} kennzeichnet jede Art von Objekt, das in eine HTML Seite eingef"ugt werden kann. Dabei kann es sich z.B. um Bilder, Audio, Video, mathematische Formeln oder Anwendungen handeln. Die spezielleren Schl"usselworte {\em IMG} f"ur das Einf"ugen von Bildern und {\em Applet} f"ur das Einbinden von {\java} Applets sind damit obsolet.

\item[Unterst"utzung von {\em Style Sheets}:] {\em Cascaded Style Sheets} erlauben die Festlegung der Darstellung (z.B. Schriftgr"o"se und Schriftart) von mit HTML Schl"usselworten gekennzeichneten Informationen ({\VAS}~\ref{html}).

\item[Unterst"utzung von Skript Sprachen:] HTML unterst"utzt die Einbindung von Clientskripten in beliebigen Sprachen. Dadurch wird es m"oglich, dynamische HTML Seiten zu gestalten, die individuell auf Benutzereingaben reagieren k"onnen, ohne daf"ur mit dem Server Kontakt aufzunehmen ({\VAS}~\ref{skripte}).

\item[Versionierungsunterst"utzung:] Abschnitte in einem HTML Dokument k"onnen mit Hilfe der neuen Schl"usselworte {\em INS} und {\em DEL} als "`eingef"ugt"' oder "`gel"oscht"' gekennzeichnet werden. In Zusammenhang mit dem Attribut {\em datetime}, das den Zeitpunkt des Einf"ugens oder L"oschens eines Abschnittes kennzeichnet, k"onnen so mehrere Versionen eines Dokumentes in einer Datei gespeichert werden ({\VAS}~\ref{vtml}).
\end{description}

Mit der Definition des Schl"usselwortes {\em Object} ist der Weg zu zusammengesetzten Dokumenten (engl. {\em compound documents}) bereits vorgegeben. W"urde desweiteren die M"oglichkeit f"ur den Benutzer bestehen, aus diesen zusammengesetzten Dokumenten einzelne Objekte zu entnehmen, sie lokal zu editieren und dann wieder in das Dokument zur"uckzulegen ({\em drag and drop}) --- dies k"onnte z.B. unter {\ms} {\win} mit der {\ole} Technologie erfolgen --- w"urde das Workflow Modell, bei dem ein zu bearbeitendes Objekt von einem zum n"achsten Bearbeiter gereicht wird und jeder seine "Anderungen daran vornimmt, um zur Erledigung eines Auftrages beizutragen, in greifbare N"ahe r"ucken. 

\subsection{{\html}-Erweiterung {\msql}}
\label{msql}
Ein typisches Verfahren, um dynamische HTML Seiten zu erzeugen, ist die Anbindung einer Datenbank an einen WWW Server "uber die CGI Schnittstelle des Servers. Ein Skriptprogramm "ubernimmt bei einer Anfrage eines Client an den Server die Kommunikation mit der Datenbank, indem es die Verbindung zur Datenbank aufbaut, eine SQL Anfrage aus den vom Server gelieferten CGI Variblen erzeugt und an die Datenbank stellt und die von der Datenbank gelieferten Ergebnisse in Form von HTML Seiten an den Server zur"uckschickt, der sie dann zum Client "ubertr"agt. Dieses Vorgehen hat den Nachteil, da"s bei Layoutver"anderungen der erzeugten HTML Seiten das Skript ge"andert werden mu"s, d.h. Layout"anderungen erfordern Programmierkenntnisse in der verwendeten Skriptsprache.

Ein Beispiel f"ur die Verlagerung der Datenbankaufrufe in HTML Seiten ist die WWW Schnittstelle zum Datenbankprogramm {\msql} \cite{SG96}. Hierbei sorgt ein CGI Skript f"ur die Verarbeitung von HTML Seiten, die neben normalem HTML Code auch spezielle {\msql} Anweisungen  enthalten. Das Skript nimmt als Argument eine HTML Seite und die vom Client eingegebenen Paramter, durchsucht die HTML Seite nach {\msql} Anweisungen und f"uhrt sie gegebenenfalls mit den aktuellen Parametern aus. Eine Anfrage k"onnte z.B. lauten:

\begin{xple}
http://www.rechner.de/cgi-bin/w3-msql/namen.html?name=B"osch
\end{xple}

Die Datei {\em namen.html} k"onnte z.B. so aussehen (nach \cite{SG96}):

\begin{xple}
$<$html$>$
$<$head$>$
$<$title$>$WWW mSQL Beispiel $<$/title$>$
$<$/head$>$
$<$body$>$
$<$! msql connect $>$
$<$! msql database beispiel $>$
$<$! msql query: "'SELECT Name FROM adressen WHERE Name='\$name': "' ergebnis $>$
$<$ul$>$
$<$! msql print\_rows ergebnis "'$<$li$>$ @ergebnis.0 "'$>$
$<$/ul$>$
$<$! msql free ergebnis$>$
$<$! msql close $>$
$<$/body$>$
$<$/html$>$
\end{xple}

In diesem Beispiel werden mit den ersten beiden {\msql} Kommandos die Verbindung zur Datenbank aufgebaut und danach alle Namen aus der Adre"stabelle herausgefiltert, die dem  "ubergebenen Parameter {\em name} entsprechen. Die einzelnen Ergebnisse werden in einer unnumerierten Liste dargestellt. Danach wird der Speicherplatz f"ur das Ergebnis der Anfrage wieder freigegeben und die Verbindung zur Datenbank geschlossen. Anfragen an eine Datenbank k"onnen jedes g"ultige {\msql} Kommando enthalten, also z.B. auch: INSERT, UPDATE oder  DELETE. Desweiteren k"onnen Abschnitte einer HTML Seite mit dem beliebig tief schachtelbaren  {\em if-then-else} Konstrukt bedingt verwendet werden. 

Am Beispiel von {\msql} lassen sich Parallelen zwischen erweiterten HTML Dokumenten und dem Klassenkonzept in der Softwareentwicklung erkennen. Eine Instanz eines HTML/{\msql} Dokumentes entsteht erst zur Laufzeit, indem die enthaltenen {\msql} Anweisungen mit aktuellen Parametern versehen und ausgef"uhrt werden. Die neue Instanz des Dokumentes wird dann mit aktuellen Daten aus der Datenbank gef"ullt. Dies ist mit der Erzeugung eines neuen Objektes --- das ebenfalls "uber Parameter initialisiert wird --- als Instanz einer Klasse in der Softwareentwicklung vergleichbar.

{\msql} ist nur ein Beispiel aus einer gro"sen Menge propriet"arer Erweiterungen von HTML zur Erzeugung dynamsicher HTML Seiten. Alle namhaften Datenbankhersteller bieten WWW Schnittstellen zum Zugriff auf ihre Datenbanken an. Ein "ahnlicher Ansatz wird in Abschnitt~\ref{dcom} mit den {\em Active Server Pages} von {\ms} beschrieben. 

\subsection{XML}
\label{xml}
Die {\em Extensible Markup Language} (XML) ist eine Teilmenge von SGML \cite{Ma97} und wie SGML eine Sprache zur Definition von Sprachen. Im Gegensatz zu HTML, das im Sinne von SGML eine Dokumenttypdefinition ({\em document type definition}, DTD) ist, erlaubt XML die Definition eigener DTDs.

Jedes XML Dokument besteht aus einer DTD und einer Instanz dieser DTD. Eine DTD ist eine formale Grammatik, die eine spezifische XML Sprache definiert. Eine DTD f"ur einen Dokumententyp "`mail"' k"onnte z.B. folgenderma"sen aussehen:

\begin{xple}
$<$!DOCTYPE mail SYSTEM "'mail.dtd"'$>$
$<$!ELEMENT mail (receiver, sender, date, subject, data)$>$
$<$!ELEMENT receiver (\# PCDATA) $>$
$<$!ELEMENT sender (\# PCDATA) $>$
$<$!ELEMENT date (\# PCDATA) $>$
. . .
\end{xple}

Das Layout der in der DTD definierten Schl"usselworte wird in {\em Style Sheets} definiert ({\VAS}~\ref{html}). Ein Anwender verwendet diesen neuen Dokumenttyp, indem er auf die Definitionsdatei "`mail.dtd"' verweist und dann die dort eingef"uhrten Schl"usselworte wie in HTML verwendet, z.B.:

\begin{xple}
$<$!DOCTYPE mail SYSTEM "'mail.dtd"'$>$
$<$mail$>$
   $<$receiver$>$ "'your.name@institute.edu"' $</$receiver$>$
   $<$sender$>$ "'my.name@institute.edu"' $</$sender$>$
   . . .
$<$/mail$>$
\end{xple}

Mit Hilfe von XML sollen folgende Defizite von HTML ausgeglichen werden:

\begin {description}
\item[Erweiterbarkeit:]  Informationsanbieter k"onnen neue Markierungscodes und Attribute definieren. Es gibt z.B. bereits eine Anwendung von XML in Form einer {\em Chemical Markup Language} (CML) \cite{Ma97}. CML enth"alt neben den HTML Schl"usselworten auch spezielle Notationsdefinitionen f"ur Molek"ule und Me"sdaten. Ein CML {\brow} stellt die Molek"ule auf der Client Seite als berechnete 3-D Grafik dar.

\item[Strukturierung:] Da HTML Tabellen (engl. {\em tables}) und Rahmen (engl. {\em frames}) nur eingeschr"ankte M"og\-lich\-kei\-ten zur Strukturierung von Daten aus Datenbanken bieten, k"onnen in XML Strukturen beliebig tief geschachtelt werden.

\item[Validierung:] Sollen Informationen aus einer Datenbank auf einem WWW Server in ein lokales Informationssystem beim Client "ubernommen werden, bietet HTML keine M"oglichkeit, die Daten auf strukturelle G"ultigkeit zu "uberpr"ufen, bevor die empfangende Anwendung versucht, die Daten in das Zielsystem zu importieren. Bei XML m"ussen sich Client und Server auf eine gemeinsame DTD einigen und die Validierung der Daten kann bereits vor dem Import  durch den XML {\brow} erfolgen.                                                                  
\end {description}

XML ist nicht r"uckw"artskompatibel zu HTML und erfordert daher neue {\brow}. HTML wird durch das Aufkommen von  XML nicht aus dem WWW verdr"angt werden, da es bereits weit verbreitet ist und noch keine popul"aren XML {\brow} von der Funktionsvielfalt eines {\net} {\nav} oder {\ms} {\ie} existieren. F"ur spezielle Anwendungsgebiete wie z.B. Verlage, Handelsh"auser oder die Luft- und Automobilindustrie eignet sich XML jedoch, da so der plattformunabh"angige und validierbare Datenaustausch strukturierter Informationen zwischen heterogenen Systemen "uber das WWW erfolgen kann.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{{\java}}
\label{javaEntw} 
Obwohl die Programmiersprache {\java} unbestreitbar gro"sen Erfolg bei Softwareentwicklern verbuchen kann, fehlen ihr diverse Eigenschaften moderner Programmiersprachen \cite{Fi96}. So ist es z.B. in {\java} nicht m"oglich, den abstrakten Datentyp einer Liste zu implementieren ohne den Typ der Listenelemente genau zu spezifizieren. Da es jedoch bei einer Liste nicht darauf ankommt, ob sie Integer oder Strings enth"alt, sondern allein auf die Art des Zugriffs, wird z.B. bei der Implementierung von Integer- und String-Listen ein Gro"steil des Codes identisch sein. In einer generischen Sprache wie {\tl} \cite{Matt93} "ubernimmt in so einem Fall ein Typparameter die Funktion eines Platzhalters f"ur den Typ der Listenelemente. Dies erm"oglicht eine hochgradige Wiederverwendung von Code, da nicht f"ur jeden Typ von Listenelementen eigene abstrakte Datentypen definiert werden m"ussen. Ein weiterer Vorteil funktionaler Sprachen wie {\tl} gegen"uber {\java} sind die Funktionen h"oherer Ordnung. Dabei handelt es sich um Funktionen, die Funktionen als Parameter "ubernehmen und zur"uckgeben k"onnen. Durch die Unterst"utzung dieses Konzeptes ist ebenfalls ein erh"ohtes Ma"s an Modularit"at und Codewiederverwendung m"oglich \cite{Fi96}. 

In diesem Abschnitt werden zwei Weiterentwicklungen vorgestellt, die {\java} um Konzepte moderner Programmiersprachen erg"anzen. {\pizza} ist eine Entwicklung der Universit"at Karlsruhe, die u.a. parametrischen Polymorphismus f"ur {\java} einf"uhrt ({\VAS}~\ref{pizza}). {\pjava} ist ein Projekt der Universit"at Glasgow in Kooperation mit {\sm}, das orthogonale Persistenz f"ur {\java} untersucht ({\VAS}~\ref{pjava}). 

Das Komponentenmodell {\java} {\beans},  bei dem es sich um eine Erweiterung des {\java} API handelt, wird in Abschnitt ~\ref{javabeans}  vorgestellt. 

\subsection{{\pizza}}
\label{pizza}
{\pizza} ist eine Erweiterung von {\java}, die drei Konzepte moderner Programmiersprachen in {\java} einbringt \cite{OW97}:

\begin{description}
\item [Parametrischer Polymorphismus:] Polymorphismus stellt einen generellen Ansatz zur Verf"ugung, der Daten oder Algorithmen beschreibt, bei denen die Struktur unabh"angig vom manipulierten Elementtyp ist. Beim parametrischen Polymorphismus k"onnen Typen z.B. als Parameter von Klassen- oder Funktionsdefinitionen auftreten.

\item [Funktionen h"oherer Ordnung:] Funktionen h"oherer Ordnung --- auch als Funktionen erster Klasse bezeichnet --- k"onnen Funktionen genau wie Daten als Parameter bekommen, als Ergebnis zur"uckliefern und in Variablen oder Datenstrukturen speichern.

\item [Algebraische Datentypen:] Algebraische Datentypen werden in {\pizza} "uber Fallunterscheidungen in Klassendefinition ({\em class cases}) definiert. Per {\em pattern matching} kann der Typ einer spezifischen Instanz einer Klasse bestimmt werden.
\end{description}

{\pizza} Programme werden in {\java} Bytecode "ubersetzt. Dadurch ist der erzeugte Code auf jeder virtuellen {\java} Maschine (JVM) lauff"ahig und die Verwendung des stetig wachsenden {\java} API ist m"oglich. Die "Ubersetzung des erweiterten {\pizza} Programmcodes in {\java} Code erfolgt "uber zwei unterschiedliche Verfahren:

\begin {description}
\item[Heterogene "Ubersetzung:] Bei der heterogenen "Ubersetzung von {\pizza} Code in {\java} Code wird f"ur jeden benutzten Typ eine spezialisierte Kopie des Codes angelegt. 

\item[Homogene "Ubersetzung:] Eine homogene "Ubersetzung benutzt eine einzelne Kopie des Codes mit einer universellen Repr"asentation.
\end{description}

Am Beispiel des parametrischen Polymorphismus werden beide Arten der "Ubersetzung erl"autert. Die Klasse {\em Pair} nimmt einen Parameter {\em elem}. Dieser Parameter ist ein Platzhalter f"ur den Typ des zu bildenden Paares. Die Klasse kann z.B. ein Paar aus Zeichenketten oder Zahlen erzeugen.

\begin{xple}
class Pair$<$elem$>$ \{
    elem x; elem y;
    Pair (elem x, elem y) \{this.x = x; this.y = y;\}
    void swap () \{elem t = x; x = y; y=t;\}
\}

Pair$<$String$>$ p = new Pair("'world"', "'Hello "');
Pair$<$int$>$ q = new Pair(22, 64);
\end{xple}

Die heterogene "Ubersetzung des obigen {\pizza} Codes in {\java} erfolgt so, da"s f"ur jede Instanz der Klasse {\em Pair} eine Kopie des Codes erzeugt wird. 

\begin{xple}
class Pair\_String \{
    String x; String y;
    Pair (String x, String y) \{this.x = x; this.y = y;\}
    void swap () \{String t = x; x = y; y=t;\}
\}

class Pair\_int \{
    int x; int y;
    Pair (int x, int y) \{this.x = x; this.y = y;\}
    void swap () \{int t = x; x = y; y=t;\}
\}

Pair\_String p = new Pair\_String("'world"', "'Hello "');
Pair\_int q = new Pair\_int(22, 64);
\end{xple}

Bei der homogenen "Ubersetzung wird die Typvariable {\em elem} aus der Klasse {\em Pair} durch die Klasse {\em Object} ersetzt. 

\begin{xple}
class Pair \{
    Object x; Object y;
    Pair (Object x, Object y) \{this.x = x; this.y = y;\}
    void swap () \{Object t = x; x = y; y=t;\}
\}

class Integer \{
    int i;
    Integer (int i) \{this.i = i;\}
    int intValue() \{return i;\}
\}

Pair p = ((Object)"'world"',(Object)"'Hello "');
Pair q = new Pair((Object)new Integer(22), (Object)new Integer(64)); 
\end{xple}

Die Erzeugung eines Paares aus Zeichenketten erfolgt "uber eine Konvertierung der Zeichenkettenobjekte in Objekte. Um ein Zahlenpaar zu erzeugen, m"ussen Zahlenwerte vom Basistyp {\em int} zuerst in ein Objekt vom Typ {\em Integer} konvertiert werden, bevor sie in ein Objekt vom Typ {\em Object} konvertiert werden k"onnen.

Im Hinblick auf die Redundanz des Codes der heterogenen "Ubersetzung und die Typkonvertierungen bei der homogenen "Ubersetzung sind die Vorteile der direkten Unterst"utzung von Polymorphismus sichtbar.

\subsection{{\pjava}}
\label {pjava}
W"ahrend die {\java} Anwendungsprogrammierschnittstelle (API) persistente Daten "uber eine Schnittstelle zu Datenbanken ({\jdbc}) unterst"utzt, entwickelt die Universit"at Glasgow eine orthogonal persistente Variante von {\java}: das sogenannte {\pjava} \cite{Ne96}.  

Persistenz ist die Eigenschaft von Datenstrukturen, "uber die Dauer von einzelnen Betriebssystemprozessen hinaus zu existieren. Orthogonal persistente Systeme sind durch folgende Merkmale charakterisierbar \cite{AM95}:
\begin{description}
\item[Unabh"angigkeit der Persistenz:] Programme sind unabh"angig von der Langlebigkeit der in ihnen verarbeiteten Daten, d.h. der Programmierer mu"s sich nicht um den expliziten "Ubergang von fl"uchtigen (transienten) Daten zu dauerhaften (persistenten) Daten k"ummern.
\item[Orthogonalit"at der Datentypen:] Datenobjekte sind unabh"angig von ihrem Typ immer persistent.
\item[Identifikation der Persistenz:] Persistente Objekte sind unabh"angig vom Typsystem oder von Objektbezeichnern identifizierbar. In der Regel ist Persistenz "uber die Erreichbarkeit eines Objektes von einer persistenten Wurzel aus definiert.
\end{description}

Die Vorteile orthogonal persistenter Systeme liegen u.a. in:
\begin{itemize}
\item der Steigerung der Produktivit"at in Folge der einfachen Semantik,
\item der Vermeidung von Datenkonvertierungen zwischen transienten und persistenten Daten,
\item der automatischen Bereitstellung referentieller Integrit"at f"ur das gesamte System w"ah\-rend seiner Lebensdauer.
\end{itemize}

Die entscheidenden Ziele f"ur das Design von {\pjava} sind \cite{A*96}:
\begin{itemize}
\item keine Sicherheitsl"ucken durch die Benutzung der Persistenz,
\item nur minimale Erweiterungen bzw. "Anderungen an der Sprache {\java},
\item keine Beeinflussung der Performanz in Abh"angigkeit von Nutzung der Persistenz,
\item dem Benutzer sowohl einfache Transaktionsmodelle (ACID, verkn"upfte Transaktionen) als auch universell nutzbare Transaktionsbausteine, die dem Benutzer die Erstellung eigener Modelle erm"oglichen, zur Verf"ugung zu stellen.
\end{itemize}

Desweiteren soll in {\pjava} die Kooperation zwischen mehreren persistenten Speichern er\-m"og\-licht werden. Dazu dient sowohl das Kopieren von Objekten zwischen Speichern sowie Methodenaufrufe "uber Speichergrenzen hinweg. Weitere Ziele des {\pjava} Projektes sind u.a. ein allgemeines Modell f"ur verteilte Anwendungen unter Ber"ucksichtigung unzuverl"assiger WANs ({\em Wide Area Networks}), eine entsprechende Erweiterung der Transaktionsarchitektur und die Entwicklung effizienter Algorithmen f"ur die Speicherfreigabe auf Festplattenspeichern (engl. {\em disk garbage collections}).

\subsection{{\java} {\beans}}
\label{javabeans}
Das {\java} {\beans} API definiert ein Softwarekomponentenmodell f"ur {\java}. Das Ziel dieser Anwendungsprogrammierschnittstelle ist der Aufbau eines offenen Marktes f"ur {\java} Softwarekomponenten, in dem unabh"angige Softwareentwickler Komponenten erstellen und verkaufen, die vom Endbenutzer zu kompletten Applikationen zusammengesetzt werden k"onnen \cite{Beans}.

Ein {\java} {\bean} ist eine wiederverwendbare Softwarekomponente, die in einem Entwicklungswerkzeug sichtbar manipuliert werden kann. Dabei kann es sich um Benutzerschnittstellenelemente wie z.B. Schaltfl"achen (engl. {\em buttons}) oder komplexe Datenbankvisualisierungswerkzeuge handeln. Es gibt auch {\java} {\beans}, die keine Benutzerschnittstellenrepr"asentation haben, wie z.B. eine Abstraktion einer Hardwareschnittstelle eines Computers oder eine Komponente einer Serveranwendung. 

Ein {\java} {\bean} mu"s folgende Konzepte unterst"utzen:

\begin{description}
\item[Ereignisse:] Ein Ereignis ist z.B. ein Mausklick, das Verschieben eines Fensters oder eine Eingabe von der Tastatur. "Uber Ereignisse werden {\beans} miteinander verkn"upft.

\item[Eigenschaften:] Eigenschaften sind vergleichbar mit den Attributen einer Klasse. Eigenschaften eines {\bean} mit einer visuellen Benutzerschnittstellenrepr"asentation sind z.B. seine Darstellungsgr"o"se, die verwendete Schriftart oder die Hintergrundfarbe. Eigenschaften sind sowohl w"ahrend der Entwicklungsphase einer Anwendung als auch zur Laufzeit nutz- und ver"anderbar (z.B. "Anderungen von Fenstergr"o"sen).

\item[Introspektion:] Einem Entwicklungswerkzeug mu"s es m"oglich sein zu analysieren, wie ein {\bean} arbeitet, "uber welche Attribute es verf"ugt, welche Methoden aufgerufen werden k"onnen, welche Ereignisse (z.B. Mausklick, Mausbewegung, Tastatureingaben) behandelt werden k"onnen, etc. 

\item[Anpa"sbarkeit:] Die visuelle Erscheinung und das Verhalten eines {\java} {\bean} m"ussen durch den Benutzer anpa"sbar sein. So k"onnen z.B. die Werte von Eigenschaften ge"andert werden und die Methoden zur Ereignisbehandlung des {\bean} registriert und mit anderen {\beans} verkn"upft werden (z.B. kann der Benutzer definieren, da"s sich ein Hilfefenster "offnet, wenn eine Schaltfl"ache gedr"uckt wird).

\item[Persistenz:] Ein {\bean} mu"s es erlauben, einen in einem Entwicklungswerkzeug durch Anpassung von Eigenschaften erarbeiteten Zustand des {\bean} zu speichern und sp"ater wieder zu laden. 
\end{description}

{\java} {\beans} k"onnen zum Zeitpunkt der Entwicklung einer Anwendung ({\em design time}) wesentlich umfangreicher sein als zur sp"ateren Laufzeit der Anwendung {(\em run time}). Dies ist z.B. der Fall, wenn das {\bean} zu seiner Anpassung in einer Entwicklungsumgebung einen sogenannten {\em wizard} mitbringt, der die Anpassung der Eigenschaften des {\bean} "uber eine Reihe von Auswahldialogen vornimmt. Diese Art von Werkzeugen werden nur zum Entwicklungszeitpunkt einer Anwendung ben"otigt, nicht jedoch zur Laufzeit der Applikation.

Der Ansatz der {\java} {\beans} ist mit dem VBX/OCX/{\ax} Ansatz von {\ms}  vergleichbar. F"ur diese Art von Softwarekomponenten, die nur auf den {\ms} {\win} Plattformen lauff"ahig sind, hat sich in den letzten Jahren ein gro"ser Markt f"ur Softwarekomponenten entwickelt, die in Entwicklungswerkzeugen diverser Hersteller verwendet werden k"onnen und sich mit wenigen Zeilen Programmcode zu kompletten Applikationen zusammensetzen lassen. 

F"ur die Verwendung von {\java} {\beans} Komponenten im Zusammenspiel mit anderen Komponentenmodellen wie z.B. {\com} bzw. {\dcom} ({\VAS}~\ref{dcom}) sorgen spezielle Mechanismen, die f"ur den Programmierer von {\beans} unsichtbar sind. So ist es z.B. m"oglich, {\java} {\beans} in {\ole} bzw. {\ax} Containern wie z.B. der Entwicklungsumgebung {\ms} {\vb} zu verwenden. Auch der umgekehrte Weg ist in Form eines Migrationsassistenten verf"ugbar. Mit diesem Werkzeug wird aus einer {\ax} Komponente ein Implementationskelett f"ur ein entsprechendes {\java} {\bean} generiert, das dann im Gegensatz zu der {\ax} Komponente plattformunabh"angig verwendet werden kann. \footnote{Weitere Informationen zu diesen Werkzeugen findet der interessierte Leser im WWW unter der URL: http://splash.javasoft.com/beans/activextools.html}

Entwicklungsumgebungen, die das {\java} Komponentenmodell unterst"utzen, sind bereits ver\-f"ug\-bar.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\section{Internet Protokoll der neuen Generation}
\label{IPv6}
Der Erfolg des Internet im allgemeinen und des WWW im besonderen f"uhren das derzeit verwendete Internet Protokoll (IPv4) an seine Grenzen. Im Laufe der letzten Jahre hat sich nicht nur die Anzahl, der an das Internet angeschlossenen Rechner vervielfacht sondern auch die Anforderungen von Anwendungen an das Protokoll sind gestiegen \cite{C97}. Das Internet Protokoll der neuen Generation (IPv6) soll diesen Bed"urfnissen u.a. mit folgenden Eigenschaften gerecht werden:

\begin{description}
\item[Erweiterter Adre"sraum:] Internetadressen werden im IPv6 eine L"ange von 128 Bit haben, im Gegensatz zu einer Adre"sl"ange von 32 Bit im IPv4. Daraus ergibt sich ein Adre"sraum, der f"ur ein kontinuierliches Wachstum des Internet "uber mehrere Dekaden ausreicht.

\item[Reservierung von Bandbreiten:] Die "Ubertragung von Audio- und Videodatenstr"omen mu"s in regelm"a"sigen Intervallen erfolgen, um eine verz"ogerungsfreie Darstellung der Information auf dem Zielrechner zu erm"oglichen. Das {\em Reservation Setup Protocol} (RSVP) setzt auf dem IP Protokoll auf und zielt auf die vom Empf"anger initiierte Zuweisung von Ressourcen. Der Empf"anger kann eine Bandbreite f"ur eine Verbindung reservieren und so eine leitungsvermittelte Verbindung simulieren. Er erreicht dadurch eine h"ohere Qualit"at des Dienstes (engl. {\em Qualtity of Service}, QoS) f"ur seine Datenstr"ome. Erfordert z.B. eine Anwendung einen spezifischen QoS, wird RSVP benutzt, um diese Anforderung an jeden Vermittlungsrechner entlang des "Ubertragungsweges weiterzugeben. 

\item[Priorisierung von Datenstr"omen:] Das {\em Internet Protocol Version 6} (IPv6) erm"oglicht die Anpassung an unterschiedliche Netzbelastungen, indem es Datenstr"ome priorisieren kann. So kann z.B. ein Videodatenstrom in mehrere Kan"ale aufgeteilt werden, die eine fortschreitend h"ohere Bildsch"arfe haben. Treten Verz"ogerungen auf, wird die "Ubertragung der Kan"ale mit h"oherer Bildsch"arfe ausgesetzt, damit die Bandbreitenanforderungen reduziert und so wenigstens die schnelle "Ubertragung von schlechter aufgel"osten Bildern zum Empf"anger erreicht werden kann.

\item[Erweiterte Adressierungs- und Routingm"oglichkeiten:] Mit der Zunahme von Kollaborationstechniken werden F"ahigkeiten des Internet Protokolls ben"otigt, die es erlauben, Gruppen zu bilden und z.B. jedem Mitglied einer Gruppe eine Kopie eines Datenpaketes zu schicken. In anderen F"allen werden Gruppen zur Lastverteilung genutzt. Existieren mehrere identische Kopien eines Dienstes und ein Datenpaket wird an eine solche Gruppe geschickt, wird das Paket zu der Kopie des Dienstes gelenkt, die dem Sender am n"achsten ist.
\end{description}
