Martin Hanf, Swiss Center for Scientific Computing
HotETHICS
mit Java in die Bibliothek


Obwohl das Internet schon seit mehr als zwei Jahrzehnten existiert, hat es doch erst in den letzten Jahren die Aufmerksamkeit der nicht-akademischen Öffentlichkeit erregt. Dies ist der Einführung des World Wide Web (WWW) und der dafür entwickelten Web Browser zu verdanken. Damit war es für den Benutzer nun erstmals möglich, unabhängig von speziellen Protokollen und deren Befehlen durch einfaches Mausklicken auf eigens dafür gestalteten Bildschirmseiten zu den gewünschten Informationen zu gelangen. Dies führte zu einer "explosionsartigen" Vermehrung der WWW-Seiten, deren inhaltliche Bandbreite sich von den Angeboten professioneller Informations- und Datenserver bis hin zu privaten Home-Pages von Computerfreaks erstreckt. Die ansprechende graphische Gestaltung, die Aktualität und die Interaktivität des Mediums zieht beständig mehr Anbieter und Nutzer in das Netz.

Im letzten Jahr hat nun die Ankündigung einer neuen Programmiersprache für weiteren Wirbel in der WWW Szene geführt. Java, benannt nach dem amerikanischen umgangssprachlichen Ausdruck für Kaffee, hat in der Tat den Puls vieler Programmierer und Programmiererinnen nach oben schnellen lassen. Unter der etwas sehr plakativen Schlagzeile "Das Netz ist der Computer" kursieren seitdem Überlegungen, die das Internet und andere Netze selbst als Rechner erscheinen lassen.

Was ist es nun, was gerade Java für viele zur heißen Sache macht? Bisherige WWW Seiten basieren auf der Hypertext Markup Language (HTML), die den Benutzer mittels Links zur gesuchten Information leiten. Diese sind allerdings statisch und wenig flexibel. Mit Java wird nun ein ganz anderer Weg beschritten. Statt von Links und Scripts werden HTML Seiten nun von Java Applets bevölkert. Diese sind selbständige Programme oder Programmteile, die bei dem Besuch einer WWW Seite automatisch auf den eigenen Rechner geladen und dort ausgeführt werden. Damit eröffnet Java nun Perspektiven, die eine neue Form der Computeranwendungen und der Softwaredistribution erlaubt.

Zwar konzentrieren sich die Entwickler von Applets zur Zeit im wesentlichen noch darauf, die WWW-Seiten durch allerlei Animationen "aufzupeppen", jedoch sind weiterführende Einsatzbereiche denkbar.
Betrachtet man die heute gängigen Applikationen, wie z.B. Textverarbeitungsprogramme, so fällt auf, daß diese zumeist speicherplatzfressende "Monsterpakete" sind, deren Funktionalität vom Anwender in aller Regel nur sehr begrenzt genutzt wird. Das dynamische Laden der Programme erlaubt dagegen den gezielten Zugriff auf die gewünschten Funktionen, ohne den sonst üblichen Bedarf an Festplattenspeicherplatz. Zudem erhält der Benutzer stets die aktuellste Version des Programmes über das Netz; aufwendige Neuinstallationen entfallen.

Die Möglichkeit mit Java aktive graphische Benutzerschnittstellen zu generieren, die auch Funktionalität des angebundenen Systems auf dem Client-Rechner übernehmen kann, ist der Ausgangspunkt des HotETHICS Projektes, das einen neuen Zugang zum Katalog des Züricher Informationsverbundes über das Internet zur Verfügung stellen soll.

Weitere Anwendungsmöglichkeiten bieten sich durch sogenannte Agenten, die, z.B. mit dem Auftrag die besten Angebote für bestimmte Waren zu finden, weltweit die WWW Seiten und Informationsserver durchsuchen. Sicherlich läßt sich dies auch auf die herkömmliche Weise realisieren, Java jedoch bietet hierzu einen integrierten Ansatz, wobei natürlich auch Sicherheitsüberlegungen eine große Rolle spielen.
An dieser Stelle wäre allerdings schon ein Einwand zur selbstgewählten Beschränkung Javas bezüglich des Zugriffs auf beliebige Rechner im Netz fällig. Wir wollen dies jedoch bis zur Diskussion der Sicherheitsaspekte zurückstellen und zuerst eine kurze Einführung in die wesentlichen Merkmale der Programmiersprache Java geben.

Die Programmiersprache

Die Entstehungsgeschichte Javas kann nicht gerade als geradlinig und zielstrebig bezeichnet werden.
Ausgangspunkt war die Beobachtung einiger Entwickler der Sun Microsystems, Inc., eine der großen Firmen im Workstation-Markt, daß heutzutage Mikroprozessoren in vielen elektronischen Geräten eingesetzt werden, vom Toaster bis sogar in Hoteltürknöpfen (Wired, 1995). Man beschloß, ein System zu entwickeln, daß in der Lage sein würde, allgemeine Geräte des täglichen Gebrauchs zu kontrollieren. Dies ist natürlich nur möglich, wenn die erforderliche Software von der speziellen Hardware weitgehend unabhängig ist. So entstand, noch vor dem World Wide Web, die Grundidee zu Java, wenn auch unter anderem Namen.

Es ist offensichtlich, daß auch im Internet, das ja ein Verbund der unterschiedlichsten Rechnertypen und Betriebssysteme darstellt, die Plattformunabhängigkeit eine Vorraussetzung für den Erfolg einer netzweiten Programmiersprache ist. Bei Java wird dies durch die Virtual Machine (VM) erreicht. Dieser virtuelle Computer ist in die Java-fähigen Netbrowser integriert und interpretiert den Byte Code der Applets, die von den WWW-Seiten geladen werden und übersetzt ihn für die betreffende Plattform. Dieser Byte Code wird vom Java Compiler generiert, wobei noch eine weitere Compilierstufe möglich ist um Native Code zu erzeugen, der direkt auf dem Betriebssystem ausgeführt werden kann, auf dem der Compiler installiert ist. Native Code kann nicht über das Netz verschickt werden, die Portabilität des Applets geht damit natürlich verloren.

Interpretierte Sprachen werfen stets die Frage nach der Performance auf. Die Zwischenstufe des Byte Codes nimmt indes schon viele Aufgaben, die ein Compiler durchführen muß, vorweg, so daß Java auch als compilierte und interpretierte Sprache bezeichnet wird. Natürlich muß davon ausgegangen werden, daß maschinenspezifischer Code stets effizienter sein wird als Javas Byte Code. Mit diesem Nachteil erkauft man sich jedoch die Unabhängigkeit von Betriebssystemen, womit Portierungen der Programme entfallen.
Für graphische Benutzeroberflächen dürfte die Effizienz eher von untergeordneter Bedeutung sein, inwieweit andere Applikationen dadurch eingeschränkt werden, wird sich zeigen.

Java gehört zu den Objekt-Orientierten Programmiersprachen (OOP), wobei die Syntax stark an C++ angelehnt ist. Die Objekte bestehen aus Instanzen der Klassen, die Variablen und Methoden definieren.
Subklassen können durch Vererbung abgeleitet werden, wobei diese die Methoden und Variablen der Oberklasse übernehmen. Hierbei ist es möglich, daß die Methoden der Oberklasse überschrieben und mit veränderter Funktionalität ausgestattet werden kann. Im Gegensatz zu C++ sind Mehrfachvererbungen nicht erlaubt, was zu einer Vereinfachung der Objektstrukturen führt.

Mittels Vererbung lassen sich auf elegantem Wege nach dem Baukastenprinzip Softwarepakete, Packages in der Java Terminologie, zusammenstellen. Das Überschreiben der Methoden gewährt die nötige Flexibilität um komplexe Anwendungen zu entwickeln und sie gemäß den Anforderungen zu implementieren, ohne auf schon vorhandene Klassen verzichten zu müssen. Diese Wiederverwertbarkeit von bereits definierten und getesteten Objekten kann die Effizienz der Software-Entwicklung entscheidend erhöhen.
Als Beispiel kann hierfür das von Sun für Java mitgelieferte Application Window Toolkit (AWT) gelten, das die für interaktive Benutzeroberflächen benötigte Funktionalität, wie Event Handling, Scrollbars usw. zur Verfügung stellt.

Ein weiterer bedeutender Unterschied zu C++ ist der Verzicht auf Zeiger. Felder sind "true arrays" anstatt verketteter Zeigerlisten, so daß der korrekte Zugriff innerhalb der Feldgrenzen überprüft werden kann. Speicherbereich kann nur durch das new Statement alloziert werden; die in Java eingebaute Garbage Collection kümmert sich selbständig um nicht mehr benötigten Speicher und gibt ihn zur Wiederverwendung frei. All dies eliminiert die bei C++ so sehr "beliebten" Fehlerquellen und Memory Leaks, ohne eine Einschränkung in der dynamischen Verwaltung von Objekten zu bewirken.

Als netzorientierte Sprache bietet Java selbstverständlich die benötigten Klassen und Methoden zum Laden von URLs, Öffnen von Sockets usw. Weiterhin gehören Exception Handling, Threads und eine Schnittstelle zum Einbinden von C Code zur Standardausrüstung des Java Developer Kits (JDK).

Ist Java sicher?

Die Sicherheit von vernetzten Computersystemen und deren Abschottung gegen unberechtigten Zugriff ist nicht erst seit der Einführung des WWW ein Thema. Doch gerade mit den Perspektiven, die diese rasch expandierende Technologie in Hinsicht auf die kommerzielle Nutzung des Netzes bietet, wird diesem Problem weitere Brisanz verliehen. Boten die bisherigen WWW-Seiten statische Informationen und Links zu weiteren Seiten, so werden nun mit Java Applets Programme auf den eigenen Rechner geladen und dort ausgeführt. Es ist nicht weiter verwunderlich, daß dies zur Besorgnis führt; wird doch befürchtet, daß diese Applets gewissermaßen als "Spione" die lokalen Rechner durchsuchen und eventuell vertrauliche Informationen zu ihrem Ursprungsrechner zurücksenden.

Die Entwickler Javas waren sich natürlich dieser Probleme bewußt und haben ihre Vorkehrungen getroffen. Insbesondere ist hier das Fehlen von Zeigern oder unerlaubter Referenzierung von Objekten zu nennen. Es ist einem Java Programm nicht möglich, den eigenen Programmstack oder nicht-allozierte Speicherbereiche zu manipulieren. Es obliegt dem Browser, den Zugriff der Applets auf Festspeicherplatten zu kontrollieren und diesen nur für bestimmte Verzeichnisse zu gestatten. Die oben erwähnte Befürchtung über spionierende Applets erscheint damit unbegründet. Ebenso ist es gemäß der Java-Spezifikation nicht möglich, weitere, nicht in der Virtual Machine laufende Programme zu starten. Damit können auch keine Funktionen des Betriebssytems direkt aufgerufen werden um damit z.B. den Inhalt der Festspeicherplatte zu manipulieren.

Diese strenge Handhabung von Java Applets innerhalb der Virtual Machine gewährt sicherlich Schutz vor dem Eindringen von Viren ohne die Einsatzmöglichkeiten Javas zu beschränken. Anders sieht es allerdings in Hinsicht auf die Fähigkeit der Applets zum selbständigen Aufbau von Verbindungen zu beliebigen Rechnern im Netz aus. Hier hat Sun und auf der Browser-Seite Netscape einen Riegel vorgeschoben.

Danach ist es nicht möglich, daß ein Applet mit einem anderen Rechner kommuniziert, als mit dem, von dem es ursprünglich geladen wurde. Die Intention die dahinter steht, ist klar; schließlich hat ein Benutzer das berechtigte Interesse zu wissen, mit welchem Rechner er gerade kommuniziert. Ob dies allerdings eine wirkungsvolle Maßnahme ist, das sei dahingestellt, denn es ist ohne weiteres möglich, auf dem Ursprungsrechner eine Application zu starten, die problemlos Verbindung des Applets zum Rest der Welt herstellen kann. Applications sind Java Programme, die nur lokal ausgeführt werden können und nicht selbst über das Netz geladen werden. Der Benutzer weiß somit immer was er tut - zumindest sollte er es -, wenn er eine Application startet. Ob allerdings das Applet, das von einer WWW-Seite geladen wird, auf dem Ursprungsrechner noch mit einer Application verbunden ist, dies bleibt dem Anwender verborgen.

Auf der anderen Seite stellt dies eine einschneidende Restriktion für den Anwendungsbereich Javas dar. Denn gerade die Möglichkeit mittels Java Applets aktiv Verbindungen im Netz aufzunehmen und Informationen auszutauschen ist einer der faszinierenden Aspekte dieser Sprache. Es ist daher nicht überraschend, daß dieser Sachverhalt zu ausführlichen Diskussionen in der Java-Newsgroup geführt hat.

Es ist davon auszugehen, daß diese Diskussion so schnell nicht abgeschlossen sein wird. Letztlich läßt sich jedoch sagen, daß Java Sicherheitsaspekte bietet, die wohl von kaum einer anderen Netzwerkorientierten Programmiersprache geboten wird. Den Erfindungsreichtum unerwünschter Besucher in Computersystemen in Betracht ziehend, sollte man die Entwicklung auf diesem Gebiet allerdings stets im Auge behalten.

HotETHICS - Mit Java in die Bibliothek

Seit 1988 wird das an der Eidgenössischen Technischen Hochschule Zürich (ETH) entwickelte System ETHICS (ETH Library Information Control System) gemeinsam mit anderen Bibliotheken innerhalb und außerhalb der ETH Zürich und der EPF Lausanne zum Zwecke der Katalogisierung und Ausleihe von Dokumenten angewandt. Bis zu 600 Benutzerinnen und Benutzer können zeitgleich auf dem weltweit zugänglichen Online-Katalog umfangreiche Recherchen und Bestellungen durchführen. In Spitzenminuten werden bis zu 35.000 Zugriffe auf das Datenbanksystem registriert.

1994 hat sich nun auch die Zentralbibliothek Zürich (ZBZ) an ETHICS angeschlossen, was seitdem unter dem Namen ETHICSplus firmiert. Den 120.000 Benutzerinnen und Benutzern dieses Informationsverbundes Zürich stehen über den Online-Katalog Nachweise auf 1,4 Millionen Informationsträger zur Verfügung. Diese und weitere 7,2 Millionen Einheiten, die außer Büchern, Zeitschriften und Zeitungen auch die ganze Palette moderner Informationsträger wie CD-ROM usw. umfassen, können direkt per Knopfdruck über den Online Service bestellt und innerhalb von 24 Stunden ausgeliefert werden. Die Zahl von rund 1.000.000 Ausleihen pro Jahr spricht für die hohe Akzeptanz dieses Verbundes, dem inzwischen 35 Bibliotheken angeschlossen sind (H. Hug und H. Köstler).

Der Kontakt zum elektronischen Katalog stellt sich als Menü-orientierter Dialog über Terminalemulatoren dar. Diese Menüs bieten alle Optionen der Recherche und der Bestellung um den Anforderungen der Benutzer gerecht zu werden. Nichtsdestotrotz haben sich die Computeranwender an graphische Benutzeroberflächen gewöhnt, da diese einen intuitiveren Ansatz des Dialogs mit dem Rechner bieten. Dies, und die Tatsache, daß der Online Katalog unter anderem auch über das Internet zur Verfügung steht, ließ Java als offensichtliche Wahl für die Entwicklung einer neuen Oberfläche erscheinen. In Anlehnung an den Sun Browser "HotJava" wurde dieses Projekt mit der geplanten Laufzeit von sechs Monaten unter dem Titel HotETHICS gestartet.

In diesem Rahmen wird angestrebt, die Benutzerinnen und Benutzer zielstrebig zu den gesuchten Dokumenten zu führen und diese mit Hilfstexten und Zusatzinformationen zu begleiten. Auf diese Weise können seltener benötigte Dialogseiten in der üblichen Abfrage vermieden und die Effizienz der Recherche erhöht werden.

Die Möglichkeiten Javas erschöpfen sich jedoch nicht in der Gestaltung einer neuen graphischen Schnittstelle. Gerade das dynamische Laden von Applets, gestattet prinzipiell die Verteilung und Auslagerung von Funktionalität auf den Rechner des Benutzers. So könnten z.B. Sortiervorgänge, Speicherung von Zwischenergebnissen oder etwa die Überprüfung von Recherche-Stichwörtern auf ihre Sinnhaftigkeit lokal ausgeführt und damit der Host-Rechner entlastet werden. Sicherlich liese sich diese Liste noch weiter fortsetzen.

Innerhalb dieses Projektes müssen wir jedoch mit einer Einschränkung leben, die wohl auch für die meisten der vergleichbaren Projekte auf dem Gebiet des Internet-Zugriffs von Datenbanken gilt. Die Auslagerung von Aufgaben auf den Client-Rechner, erzwingt oftmals eine Veränderung der Funktionalität des Grundsystems. Dies Übersteigt natürlich den Rahmen dessen, was ein solches Projekt zu leisten vermag.
Das HotETHICS Projekt beschränkt sich daher darauf, auf dem etablierten Terminalprotokoll aufzusetzen und zusätzliche Funktionalität nur dann anzubieten, wenn diese auf die Menüstruktur von ETHICSplus abgebildet werden kann.

Java - kein kalter Kaffee!

Die Anforderungen an Informationsserver im World Wide Web werden in Zukunft steigen. Ansprechende graphische Schnittstellen, schnelle Reaktionszeiten, dynamische Lastverteilung zwischen den Rechnern und vor allem die Sicherheit des Datenaustausches werden dabei eine große Rolle spielen. Auch die Bibliotheken werden sich dem stellen und die entsprechenden Programme entwickeln müssen. Java wird hierbei gute Dienste leisten. Dafür sprechen die inhärenten Sicherheitsvorkehrungen in der Sprachdefinition sowie die eingebauten Funktionen zum netzweiten Informationsaustausch.

Für die allgemeine Akzeptanz solcher Systeme ist jedoch auch die Verfügbarkeit Javas auf den weitverbreiteten Rechner- und Betriebssystemen entscheidend. Schon heute sind Java-fähige Browser für MacOS, Windows 95, Windows NT, AIX, IRIX und Solaris Systeme verfügbar oder in der Entwicklung.
Die Resonanz, die Java in den Entwicklerkreisen gefunden hat, läßt es als durchaus realistisch erscheinen, daß hier ein neuer Standard in der Computerwelt im Entstehen begriffen ist.

Literaturhinweise und Links

Wired, The Java Saga, Dezember 1995

Ed Tittel, Mark Gaither, 60 Minute Guide to Java, Meckler Media´s Official Internet World, IDG Books Worldwide Inc, 1995

Hannes Hug und Hermann Köstler, Gegenwart und Zukunft des Informationsverbundes Zürich, Neue Züricher Zeitung, 30.Oktober 1995, Nr. 252, Seite 25

Newsgroup: comp.lang.java
Java Home Page: http://java.sun.com
ETH Bibliothek: http://ezinfo.ethz.ch/ETH/LIB/EZ_LIB/ETHBIB.HTML

Martin Hanf, Swiss Center for Scientific Computing
hanf@scsc.ethz.ch
ETH Zürich, Schweiz