Next: WebRC-Entwurf
Up: Technologie
Previous: Informationsverwaltung
Die Forderung, daß ein Client des WebRC-Systems über das Internet von einem beliebigen Server geladen und auf beliebigen
Plattformen ausführbar ist, führt zur Verwendung der Sprache Java der Firma SUN Microsystems, Inc. (s. [Mor96], [Sun96b]). Die zur Entwicklung
benutzte Javaumgebung war das von SUN für nicht-kommerzielle Zwecke frei verfügbare Java Developement Kit (JDK) 1.1.
Laut SUN ist Java eine
,,...simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable,
high-performance, multithreaded, and dynamic language.``
Die Features von Java im Einzelnen (auf der Basis von SUN's obiger Aussage):
- Simple
Java basiert auf C++, verzichtet jedoch auf Pointer und ähnliche Datenstrukturen.
Java bietet eine automatische Speicherverwaltung (memory allocation, freeing).
Die vorgegebenen Java Befehle und Klassen bestehen aus einfachen, die jeweilige Funktion beschreibenden Worten.
- Object-Oriented
Java unterstützt ausschließlich den objektorientierten Software-Entwurf.
Objektorientierung bedeutet, daß ein Problem anhand der in ihm
manipulierten Gegenstände analysiert wird. Diese Gegenstände
werden Objekte genannt. Sie haben genau bestimmbare Eigenschaften, die
in der Programmiersprache möglichst genau erfaßt werden sollen.
Die Eigenschaften wiederum bestehen aus Daten und Funktionen. Die Daten
beschreiben dabei den aktuellen Zustand des Objekts, während die Funktionen
die mit diesem Objekt möglichen Arbeitsabläufe beschreiben. Die
Funktionen ermöglichen also die Veränderung des Zustands eines
Objekts. In Java werden sie Methoden (methods) genannt. Daten und Funktionen
bilden zusammen also eine logische Einheit, das Objekt.
Die Gesamtheit aller Objekte gleicher Eigenschaften wird Klasse genannt.
Eine Klasse ist die abstrakte Beschreibung aller gleich strukturierter
Datenobjekte. Ihre Definition beinhaltet sowohl die Beschreibung der Datenstruktur
als auch die der Funktionen, die auf die Objekte dieser Klasse anwendbar
sind.
Um Klassen miteinander kommunizieren zu lassen, können sie Funktionen
zur Manipulation von Objekten anderer Klassen beinhalten. Der Datenaustausch
zwischen Objekten verschiedener oder gleicher Klassen wird ausschließlich
über Funktionsaufrufe betrieben. Die so definierten Schnittstellen
bilden die einzige Möglichkeit, von außen die Daten eines Objekts
zu manipulieren. Diese Schnittstellen werden in Java interfaces genannt.
Ihre Daten und Funktionen sind öffentlich (public). Die Funktionen
dieser Schnittstellen können von anderen Klassen, die diese Klassen
beinhalten, überschrieben werden.
Daneben gibt es auch die Daten und Funktionen innerhalb einer Klasse,
die nicht von außerhalb der Klasse manipuliert werden können.
Sie werden in Java private genannt.
- Distributed
Java ermöglicht durch die Verwendung spezieller Klassenbibliotheken die Kommunikation
von Programmen über das Internet via TCP/IP Protokoll. Als Addressoperator
werden dafür die üblichen URLs verwendet.
- Interpreted
Java Klassen/Programme werden nach der Erstellung zunächst compiliert.
Der so erzeugte Code, Bytecode genannt, wird dann auf Clientseite durch
einen Interpreter ausgeführt.
- Robust
Java ist so entworfen, daß Fehler (logische oder Syntax) nach
Möglichkeit bereits in der Compilierphase entdeckt werden. Der Compiler
findet z.B. Schreibfehler und überflüssigen Code.
- Secure
Da Java für eine Netzwerkumgebung entworfen wurde, gelten hohe
Sicherheitsanforderungen an Java Programme.
Java Programme greifen nicht direkt auf den Speicher zu.
Java Bytecode wird während der Ausführung auf unerlaubte Sprachkonstrukte
geprüft.
Während des Ladevorgangs werden die Zugriffsrechte eine Programms
geprüft.
Jedes Programm enthält ein eingebautes, konfigurierbares Sicherheitssystem.
Der Zugriff auf das clientseitige Filesystem ist für Applets restriktierbar.
Bei Datenübertragung über ein Netzwerk ist die Datenverschlüsselung
nach modernen Methoden möglich.
Zur Laufzeit eines Programms kann die Herkunft des Bytecodes über
Zugriffsrechte entscheiden.
- Architecture Neutral, Portable
Java Bytecode wird durch einen clientseitigen Interpreter ausgeführt.
Der Interpreter ist an den jeweiligen Clientrechner angepaßt, sodaß
der Java Bytecode keinen Rechnerspezifischen Restriktionen unterliegt.
- High-Performance
Durch die Verwendung eines Interpreters ist die Performance eines Javaprogramms
nicht so hoch wie die Ausführung des Hardware abhängigen Maschinencodes
eines Programms. Laut Sun Microsystems ist der Unterschied jedoch kaum
bemerkbar. Real ist dies jedoch von der Hardware abhängig, auf der
der Vergleich stattfindet.
- Multithreaded
Java ermöglicht die (quasi-)parallele Ausführung mehrerer
Threads. Ein Javaprogramm kann also mehrere Programmflüsse, abhängig
oder unabhängig voneinander ausführen (basierend auf C.A.R. Hoare's
Monitor) (s. [Mor96]).
- Dynamic
Zur Laufzeit eines Javaprogramms können zugehörige
Klassen verändert oder neue Klassen erstellt und in das Programm eingebunden
werden, ohne das eine erneute Übersetzung des gesamten Programms notwendig
ist. Außerdem können für das Programm notwendige Klassen
erst während der Laufzeit des Programms geladen werden. Diese Klassen
müssen zum Start des Programms dem Programm nicht bekannt sein.
Insbesondere die Möglichkeiten des dynamischen Ladens der Klassen, der Remote Method Invocation (RMI) [Sun96a]
und der Signed Jar Files werden im WebRC-System verwendet.
RMI ermöglicht die Ausführung von Methoden auf dem Server durch den Client. Das WebRC-System benutzt
diese Technologie für die gesamte Kommunikation zwischen Server und Client.
Die Verwendung der Signed Jar Files ermöglicht den kontrollierten automatischen Zugriff des Client-Applets auf das clientseitige
lokale Filesystem. So können Dokumente lokal auf Clientseite gespeichert und gegebenenfalls weiterverarbeitet werden.
Die von Java verwendeten Sicherheitmechanismen ermöglichen eine relativ sichere Kommunikation zwischen Server und Client.
So ist es Außenstehenden nicht ohne großen Aufwand möglich, auf der Basis der Programmiersprache in das WebRC-System
einzudringen.
Next: WebRC-Entwurf
Up: Technologie
Previous: Informationsverwaltung