2 Grundlagen

Im vorliegenden Kapitel werden einige Grundlagen erläutert, die für die folgenden überlegungen notwendig sind. Neben den Möglichkeiten der Programmiersprache Java und Erweiterungen durch das abstrakte Netzwerkprotokoll Jini wird in Abschnitt 2.4 auch das Gesamtsystem von Heywow näher beschrieben.

Der Abschnitt 2.3 erläutert besondere Einschränkungen durch die mobile Plattform und in Abschnitt 2.5 werden verschiedene Techniken für die drahtlose Kommunikation kurz vorgestellt.

2.1 Java

Java ist eine einfache, objektorientierte, verteilte, interpretierte, robuste, sichere, architekturneutral portable, hochleistungsfähige, Multithread-fähige und dynamische Sprache [Fla1998, Kap. 1], die Mitte der 90er Jahre von der Firma Sun Microsystems Inc. veröffentlicht wurde.

Mit Einführung der Java 2 Plattform, einer Sammlung von Spezifikationen und Programmierschnittstellen (im Folgenden auch kurz APIs) [Sun1999], hat Sun Microsystems das Java-System in drei unterschiedlich umfangreichen Ausgaben vorgestellt.

Grundlegend für diese Arbeit ist die Spezifikation der Micro Edition (J2ME)1, eine eingeschränkte Version des Java-Systems für kleinere Geräte des wachsenden Markts für eingebettete Systeme in Geräten für den Endverbraucher. Die J2ME beinhaltet ein hoch-optimiertes Java-Laufzeitsystem mit geringsten Ansprüchen an die Hardware-Ressourcen. Dies wird erreicht durch die Reduktion der Basisklassen. Diese können in bestimmten Anwendungsbereichen mit sogenannten Profiles um Klassen für ausgewählte Funktionalität ergänzt werden.

Um eine größere Bandbreite an Plattformen abzudecken, ist die Java 2 Micro Edition selbst in zwei Konfigurationen aufgeteilt [Gla2000]. Interessant für den Markt der Handcomputer und PDAs ist sowohl die Connected Limited Device Configuration (CLDC) für Geräte, die der Java Virtual Machine (JVM) nicht mehr als 128 KB Speicher bieten können [Sun2000], als auch die Connected Device Configuration (CDC), für etwas besser ausgestattete Endgeräte mit einer Java-Laufzeitumgebung mit mindestens 512 KB ROM und 256 KB Arbeitsspeicher [JSR2000a].

Die folgenden Abschnitte 2.1.1 bis 2.1.6 beleuchten diejenigen Eigenschaften von Java, die für die vorliegende Arbeit von Bedeutung sind.

2.1.1 Kontrollfäden

Bei der Entwicklung von Java war die Multithread-Fähigkeit ein wesentliches Entwurfskriterium. Das Konzept des Multitasking auf Threadebene ist in die Programmiersprache integriert und wird nicht erst durch zusätzliche Bibliotheken oder Erweiterungen ermöglicht [OW1997, Kap. 1]. In der Java Virtual Machine können verschiedene Kontrollfäden (Threads) einer Anwendung quasi parallel bearbeitet werden. Dies ermöglicht besonders im Einsatz bei netzweit agierenden Applikationen eine nichtblockierende Interaktion des Servers mit mehreren Klienten.

2.1.2 RMI

Solche verteilte Anwendungen sind in Java leicht mit Hilfe des entfernten Methodenaufrufs (Remote Method Invocation, RMI [Sun1998b]) zu entwickeln. Neben Klassen und Schnittstellen in java.net und java.io für die Benutzung von TCP/IP-Netzen ist das RMI-Paket seit der Version 1.1 des Java Development Kits Teil der Java Plattform. Mit RMI ist es möglich, Objekte in Java nicht nur lokal in einer Applikation, sondern auch aus einer anderen JVM anzusprechen und zu verwenden.

2.1.3 Aktivierung

Mit Einführung der Java 2 Plattform wurde der entfernte Methodenaufruf erweitert [Cou1999, Kap. 9]. Mit Aktivierung (Activation) kann ein Dienst, der sich länger im Leerlauf befindet, beendet werden. Erst wenn er aktiv auf Klientenanfragen reagieren muss, kann er in einer neuen JVM neu gestartet werden.

2.1.4 Objekt-Serialisierung

Mit Objekt-Serialisierung kann die Instanz einer Java-Klasse in einen Strom von einzelnen Bytes geschrieben werden. Durch den Versand der Daten kann anschließend das Objekt, evtl. auf einer völlig anderen Java Virtual Machine rekonstruiert (deserialisiert) werden [Cou1999, Kap. 7].

Eine ausführliche Beschreibung dieses Verfahrens bietet die Java Object Serialization Specification [Sun1998a].

2.1.5 Reflection

Mit der Reflection API in Java 2 ist es möglich, auch unbekannte Java-Objekte zu inspizieren und zu benutzen. über einfache Klassen und Schnittstellen des java.lang.reflect-Pakets ist es möglich, auf Felder, Konstruktoren und Methoden ohne Kenntnis der Klassenschnittstelle zuzugreifen.

Zusammen mit der Deserialisierung eines über das Netzwerk erhaltenen Java-Objekts ist es somit möglich, mächtige Java-Anwendungen zu entwickeln.

2.1.6 Multicast-übertragung

Um in IP-Netzen Daten von einer zentralen Stelle aus an viele Empfänger übermitteln zu können, kann Multicasting eingesetzt werden [Net2000].

Bei diesem übertragungsverfahren speist der Sender die Daten einmal in das Netz ein. Router duplizieren dann die Pakete und leiten sie zu den Adressaten in den jeweiligen Netzsegmenten weiter. Anders als bei Verfahren der Punkt-zu-Mehrpunkt-Kommunikation im herkömmlichen Unicast-Modell, kann ein Empfänger ohne Kenntnis des Senders einer Multicast-Gruppe beitreten und diese wieder verlassen.

Seit der Version 1.1 wird diese nicht verbindungsorientierte Form der Kommunikation mit UDP-Datagrammpaketen auch durch Java-Klassen unterstützt [Cou1999].

2.2 Jini

Die Jini Connection Technology (JCT) wurde von Sun Microsystems 1999 als neuer Meilenstein für die Welt der verteilten und vernetzten Systeme vorgestellt [GS2000]. Jini ist eine in 100% purem Java entwickelte Klassenbibliothek, die auf RMI aufbaut und zur dynamischen Verwaltung vernetzter Dienste eingesetzt werden kann.

Hardwarekomponenten oder Softwaredienste können mit einem Netzwerk verbunden werden und dort ihre Dienstleistung anbieten [New2000, Kap. 1]. Mit Jini ist es möglich, leistungsstarke verteilte Anwendungen zu entwickeln, die durch einen Verbund von Software- und Hardwarediensten entstehen [Mar1999, Part 1]. Ohne zusätzlichen Konfigurationsaufwand können durch den Einsatz der einfachen Basiskonzepte in Jini komplexe Dienste implementiert werden.

Eine ausführlichere Einführung in die JCT bieten z.B. die beiden Bücher [Edw1999] und [OW2000] an.

In den folgenden Abschnitten 2.2.1 bis 2.2.5 werden nur die für das Heywow-System wesentlichen Basiskonzepte kurz vorgestellt.

2.2.1 Nachschlagedienste

Nachschlagedienste (Lookup-Services, im Folgenden auch kurz LUS genannt) sind die zentralen Anlaufstellen für alle Jini-Dienste [Dö1999], Softwaredienste oder Hardwarekomponenten. Hier können Dienste (Services) Stellvertreter für die Kommunikation registrieren.

Ein Stellvertreter (Proxy) ist eine serialisierte Java-Klasse, die über das Netz von einem HTTP-Dienstgeber bezogen werden kann.

Nachschlagedienste bilden einen Verbund der bei ihnen registrierten Dienste.
Jini-Anwendungen sind nicht nur einfach objektorientierte Applikationen, sie entstehen durch Verteilung von Java Objekten über eigenständige Dienstgeber, die über ihre Stellvertreter-Objekte miteinander kommunizieren können [New2000, Kap. 1]. Klienten können durch Benutzung der registrierten Dienste eines Verbunds eigene Dienstleistungen bieten. Diese Zugriffsform auf Dienstebene gewährleistet das dynamische Verhalten von Jini-Anwendung.

Vor der Verwendung eines Nachschlagedienstes muss sich dieser bei den Dienstgebern und Klienten im Netzwerk erst bekannt machen. Hierfür benutzt er das Multicast Announcement

Abbildung 2.1: Multicast Announcement
Multicast Announcement

(vgl. Abbildung 2.1). Interessierte Klienten oder Dienstgeber, die sich beim Nachschlagedienst registrieren wollen, reagieren mit einer TCP-Unicast-Anfrage und erhalten in einer Unicast-Antwort ein ServiceRegistrar-Objekt zur Kommunikation mit dem LUS.

2.2.2 Discovery

Nachschlagedienste melden nur beim Start oder Neustart ihre Anwesenheit über UDP-Multicast. Der Prozess mit dem ein Dienstgeber oder Klient selbst aktiv wird, um im Netzwerk existierende Nachschlagedienste zu suchen, heißt Discovery.

Unicast Request

Wenn die Adresse eines Nachschlagedienstes bekannt ist, kann über TCP mit einem Unicast Request

Abbildung 2.2: Unicast Request
Unicast Request

(vgl. Abbildung 2.2) auf den Dienst zugegriffen werden. Dort kann direkt ein Stellvertreter-Objekt (ServiceRegistrar) des Nachschlagedienstes bezogen werden.

Multicast Request

Falls noch keine Adresse eines Nachschlagedienstes im Netzwerk bekannt ist, kann der Klient oder Dienstgeber mit einem Multicast Request

Abbildung 2.3: Multicast Request
Multicast Request

(vgl. Abbildung 2.3) über UDP alle erreichbaren LUS auf sich aufmerksam machen. Bei Erfolg melden die Nachschlagedienste mit TCP ihre Adresse an den Interessierten zurück. Jetzt kann der Klient mit einem Unicast Request ein ServiceRegistrar für die weitere Kommunikation anfordern.

2.2.3 Join und Lookup

In allen Nachschlagediensten, die sich durch ein Multicast-Announcement bekannt gemacht haben, oder die durch den Discovery-Prozess entdeckt worden sind, wird vom Diensterbringer ein Stellvertreter registriert. Diesen Vorgang nennt man Join. Der Nachschlagedienst speichert dieses Objekt für die spätere Kommunikation mit dem Dienstgeber und bietet es in seinem Verzeichnis für Klienten zur Benutzung an.

Ein Klient schickt an den Nachschlagedienst eine Anfrage nach einem Dienst mit einer bestimmten Schnittstelle. Erfüllt ein Stellvertreter diese Bedingungen, erhält der Klient als Antwort den gesamten Stellvertreter übermittelt. Diese Phase wird Lookup genannt. In Abbildung 2.4 wird ein Join und ein anschließendes Lookup schematisch dargestellt.

Abbildung 2.4: Join & Lookup
Join & Lookup

2.2.4 Leasing

Wichtige Voraussetzung für den fehlerfreien Ablauf einer Applikation mit Jini-Diensten sind Garantien über die in den Nachschlagediensten angebotenen Stellvertreter. In Jini ist eine Zeitzusicherung (Leasing) der Mechanismus, der von zwei Applikationen benutzt wird, um einen sicheren Zugriff auf Ressourcen für eine bestimmte Zeit zu gewährleisten [New2000, Kap. 7].

Mit der Registrierung eines Stellvertreters erhält der registrierende Dienstgeber eine Zusicherung (Lease), die Garantie des Nachschlagedienstes, dass das Stellvertreter-Objekt für eine vorgegebene Zeit Klienten angeboten wird. Bevor diese Garantiezeit abläuft und der Nachschlagedienst den Stellvertreter aus seiner Datenbank löscht, muss der Dienstgeber diese Zusicherung vom Nachschlagedienst verlängern lassen.

Das Verfahren der Lease-Vergabe zwischen Nachschlagedienst und einem sich registrierenden Dienst kann in Jini auch analog zwischen dem Dienstgeber und dem Dienstnehmer eingesetzt werden. Der Klient kann nur für die im Lease zugesicherte Zeit den Dienst sicher verwenden. Wenn er den Dienst länger in Anspruch nehmen möchte, muss er aktiv werden und eine Verlängerung beim Dienstgeber veranlassen.

Für die Verwaltung von Zusicherungen muss jeder Dienst eine Schnittstelle für das Anfordern, Erneuern und Löschen der Zeitverträge zur Verfügung stellen. Das Konzept, nach dem die Verwaltung von Zeitzusicherungen geregelt wird, ist in Jini nicht festgelegt. Hier kann eine beliebige Kombination von Verwalter und Zusicherung eingesetzt werden.

Eine Idee, das Landlord-Leasing, wird vom Prinzip der Lehenvergabe bei englischen Gutsherren (Landlords) abgeleitet. Dieses einfache Verfahren kann auch im Heywow-System von beliebigen Diensten (Gutsherren) verwendet werden.

Landlord-Leasing

In England konnte ein Gutsherr an seine Lehennehmer Ländereien verpachten. Für die Verwaltung der Pachten und die Verhandlungen mit den Pächtern hat er einen speziellen Verwalter eingesetzt. Die Pächter konnten über die Lehen frei verfügen und sie selbst wieder an Bauern weiterverpachten. Der Bauer hatte kein direktes Vertragsverhältnis mit dem Gutsherrn oder dessen Verwalter und wenn der Lehennehmer, für den er das Land bewirtschaftete, starb, fiel das Lehen wieder an den Gutsherrn zurück. Der Bauer hatte keine Möglichkeit dies zu verhindern.

In Jini verhält sich ein Dienst ähnlich wie ein Gutsherr. Er setzt einen Verwalter ein, der Zeitzusicherungen nach den Vorgaben des Dienstes erzeugt. Mit der Angabe eines eindeutigen Schlüssels, über den die Zusicherungen von ihm verwaltet und evtl. veraltete gelöscht werden, wird von ihm eine Zeitzusicherung generiert. Im Sprachgebrauch der englischen Lehenvergabe ist jede Zeitzusicherung ein Lehennehmer. Die Zeitzusicherung enthält intern den Verweis auf den Verwalter.

Ein Klient, der einen Dienst benutzen möchte, fordert beim Dienstgeber eine Zeitzusicherung an.2 Der Dienstgeber leitet diese Anforderung an seinen Verwalter weiter und dort wird dem Klienten ein Verweis auf eine Zeitzusicherung übergeben. Durch die Existenz eines gültigen Zusicherungsobjekts wird dem Klienten ein funktionierender Jini-Dienst garantiert. Nur die Zeitzusicherung selbst kann mit dem Verwalter eine Verlängerung regeln.

In der aktuellen Implementierung der Jini Connection Technology definiert Sun Microsystems eine Schnittstelle nach diesem Konzept, die zusammen mit einer Fabrikmethode und den erzeugten Zeitzusicherungen verwendet werden kann [Edw1999, Kap. 11].

Durch den Einsatz von Landlord-Leasing ist es möglich im Heywow-System ein von den konkreten Diensten unabhängiges Zeitzusicherung-Verwalter-Modell einzubauen. Jeder Dienst kann einen Verwalter, passend für seine Notwendigkeit einsetzen und ihm die Verhandlungen mit den Zeitzusicherungen überlassen.

Das Landlord-Leasing ermöglicht es, ohne direkte Verträge zwischen Klienten und Verwalter eine Zeitzusicherung für die Dienstleistung zu garantieren.

2.2.5 Attribute

Zur Einschränkung beim Nachschlageprozess (vgl. Abschnitt 2.2.3) sind nicht nur die Vorgaben bestimmter Schnittstellen möglich, die der Stellvertreter unterstützen muss. In einem Nachschlagedienst kann mit jedem Dienst-Stellvertreter auch eine Menge von Attributen gespeichert und zur genaueren Auswahl angeboten werden. Beim Nachschlagen eines Stellvertreter-Objekts kann der Dienstnehmer neben einer Schnittstellenanforderung auch einen Katalog von (Soll-)Attributen, die der Dienst erfüllen soll, mitübergeben. Attribute sind einfache serialisierte Java-Objekte [Edw1999, Kap. 7].

2.3 Mobile Endgeräte

Mobile Endgeräte unterscheiden sich erheblich von Arbeitsplatzrechnern. Handcomputer sind batteriebetrieben und müssen deshalb mit ihren eingeschränkten Energieressourcen sparsam umgehen. Ein enthaltener Prozessor bietet weniger Rechenleistung und der verfügbare Speicherplatz ist beschränkt. Für die Kommunikation mit einer lokalen oder zentralen Gegenstellen ist ein Sende-Empfangs-Modul mit Funk oder Infrarot notwendig, dessen Energieverbrauch einen erheblichen Anteil des Gesamtsystems ausmacht.

Die erreichte Portabilität kann nur mit deutlichen Beschränkungen bei der Entwicklung von Anwendungen für mobile Endgeräte erreicht werden. Der Energieverbrauch kann durch geregelten Netzwerkzugriff und vorausschauendes Zwischenspeichern gering gehalten werden. Die beschränkten Speicherressourcen müssen deshalb verwaltet werden. Dieses Ressourcen-Management [DH1995] erfordert neben der Entwicklung spezieller Applikationen auf dem Handcomputer auch eine besondere Beachtung bei der Entwicklung von den lokal erreichbaren Diensten.

2.4 Heywow

Heywow baut auf die Möglichkeiten und besonderen Fähigkeiten von Java und Jini auf [ARS2000b]. Die Vorteile von Java, die Einfachheit tragbarer Handcomputer und die Leistungsfähigkeit größerer, lokaler und globaler Dienste werden verbunden.

Heywow stellt ein Architekturkonzept für die Kombination von Kommunikation und Navigationstechnologien dar [ARS2000a]. Der Ansatz, moderne Kommunikationstechniken und lokale Dienstbenutzung mit der Mobilität eines tragbaren Endgeräts zu kombinieren, erfordert neben der genauen Lokalisierung auch die Möglichkeit zur Kommunikation in drahtlosen Ad-Hoc-Netzwerken.

Für die Bestimmung der genauen Ortsinformation existieren mehrere technische Möglichkeiten. Neben den global erreichbaren Diensten und Informationen, wie dem Global Positioning System (GPS) oder der Lokalisierung über Zellen im Mobilfunk, sieht Heywow vor, dass auch Informationen von lokalen Sendeeinrichtungen zur Ortsbestimmung und Navigationsunterstützung verwendet werden. In Heywow werden diese Lokalisierungsdienste über die Benutzung von Jini vereinheitlicht angeboten.

Die lokale Diensterbringung des Typs 'Navigation/Positionierung' kann auf diese Weise auch auf allgemeine Dienstleistungen für die Reiseplanung, wie z.B. Einkaufs- und Gastroinformationen, erweitert werden. über lokale Sendebaken soll dem Benutzer der Zugriff auf dezentrale Dienstleistungen ermöglicht werden. Mit dem Zugriff auf zentrale Dienste, private Daten, Termine und Informationen soll das mobile Endgerät zu einem umfassenden Reiseassistenten ausgebaut werden.

Diese Arbeit stellt in Kapitel 3 den Entwurf eines Rahmensystems für die Entwicklung von Diensten zur Leistungserbringung im lokalen Bereich vor und beinhaltet in Kapitel 4 die genauere Beschreibung einer Realisierung.

2.5 Drahtlose Kommunikationssysteme

Heywow verlangt für die lokale Kommunikation die Möglichkeit, zwischen den tragbaren Endgeräten, Sendebaken und Dienstgebern einfach Ad-hoc-TCP/IP-Netzwerkemit Multicast-Funktionalität zu bilden.

Drahtlose Kommunikation kann elektromagnetische Wellen als übertragungsmedium, üblicherweise Infrarot- oder Radiowellen benutzen [Wet2000]. Für die mobile Kommunikation und den Zugriff auf lokale Informations- und Diensteinheiten wird oft das international genormt freie Industrial, Scientific, Medical (ISM) Band ab 2,4 GHz des Frequenzspektrums eingesetzt.

Allgemein beschränkt sich die Reichweite von Funk-LAN-Systemen (Radio-LANs) bei nicht gerichteter Ausstrahlung, je nach Energieverbrauch, auf eine Reichweite zwischen 10 und mehreren 100 Metern [DH1995, Kap. 3]. Als technische Systeme für Heywow werden im Folgenden kurz Bluetooth und IEEE 802.11 vorgestellt.

2.5.1 Bluetooth

Schon 1994 hat Ericsson begonnen, die Möglichkeiten für eine energiesparende und günstige Radio-Funk-Schnittstelle bei Mobiltelefonen und tragbaren (Kleinst-)Computern zu erforschen [WM1999, Kap. 2.1]. Bluetooth-Technology ist ein Codename für die Spezifikation eines kleinen Nahbereichs-Radio-Funknetzes zwischen mobilen Computern, Telefonen und sonstigen portablen Endgeräten. Sie dient der schnellen Einrichtung von leistungsfähigen Ad-hoc-Netzen, die sowohl Sprache als auch Daten übertragen können sollen [Hof2000].

Der Bluetooth Chip bietet eine Sendereichweite von 10 Metern und mit einem zusätzlichen Funkmodul lassen sich, bei einer Leistung von 100mW, bis zu 100 Meter erreichen.

Für die Verwendung mit Java und Jini kann Bluetooth über einen Protokoll-Stapel ein TCP/IP-Netzwerk aufbauen. Ausgehend von einem Profile für das Punkt-zu-Punkt-Protokoll (PPP) kann ein vollwertiges IP-Netzwerk angeboten werden (vgl. [BP1999, Kap. 2.1].
Nähere Beschreibungen finden sich in der Spezifikation von Bluetooth ([BC1999] & [BP1999]).

Durch die Integration kleiner, günstiger und energiesparender Sender in existierende mobile Endgeräte wird es jetzt möglich, allgegenwärtiges Rechnen zu schaffen [HE2000].

2.5.2 IEEE 802.11

Die Produkte für die Bluetooth-Technologie befinden sich im Moment noch in der Entwicklung hin zur angestrebten Massenproduktion.

Der bestehende Funk-LAN-Standard IEEE 802.11 sendet ebenfalls über das 2,4 GHz Band. über ihn ist es eingeschränkt auch möglich, einen drahtlosen asynchronen Transfermode (WATM) zu realisieren [ALM1998].

Für Heywow interessant ist aber die Möglichkeit, in einem Funknetz über IEEE 802.11 stationäre, portable oder sich bewegende Geräte, bei einer Reichweite von 30 bis 360 Metern, über einen TCP/IP-Netzwerk Stapel verbinden zu können [Wet2000].

2.5.3 Vergleich

Beide Produkte sind für die lokale Kommunikation in Heywow einsetzbar. Mit beiden Funknetzwerken kann ein Standard-TCP/IP-Netz angeboten werden, auf dem das folgende Konzept mit der Implementierung in Java (vgl. Kapitel 4) aufbaut.


1) http://java.sun.com/j2me/
2) Hier bricht die Analogie mit der historischen Vorlage, früher konnte ein Bauer nicht direkt beim Gutsherrn einen zuständigen Lehennehmer erfragen.

----------------------------------------------------------------
[home] [TOC] [prev] [next] [guestbook] [contact]          (c) SM