Bringt uns Java mehr als winkende Pinguine?


© M + K Computermarkt, Heft 96-8, Seite 21-23
Verfasst: 10. Juni 96

Autorin: Dr. Silvia Rothen, rothen ecotronics, Bern, Schweiz
Letzte Überarbeitung: 13.05.18


Java: Diese vier harmlosen Buchstaben jagen im Moment den Puls der Internet-Gemeinschaft ebenso hoch wie das koffeinhaltige Getränk, das der netzfähigen Programmiersprache seinen Namen gab. Unvernetzte Zeitgenossen beäugen dagegen den Rummel um eine weitere objektorientierte, C++-ähnliche Sprache eher mit Skepsis und fragen sich, ob animierte Webseiten wirklich das sind, was wir am dringendsten brauchen.


Inhaltsverzeichnis


Einleitung

Als die Entwickler von SUN 1990 begannen, an einer speziellen Programmiersprache für Konsumelektronik herumzuexperimentieren, müssen sie wohl von einer Espressomaschine geträumt haben, die sich beim Absinken des Koffeinspiegels ihrer Besitzer selbständig in Gang setzt. Auf jeden Fall nannten sie ihr Baby Java, was im Amerikanischen so viel wie Kaffee heisst. Fünf Jahre lang blieb es ruhig, doch seit Anfang dieses Jahres wirbelt Java plötzlich jede Menge Staub auf. Versuchen wir, durch den Dunstschleier technokratischer Verheissungen und Fata Morganas zum Kern der Sache vorzudringen: Java ist eine objektorientierte, C++-ähnliche Programmiersprache, die vor allem (aber nicht nur) für die Programmierung interaktiver und multimedialer Anwendungen im World Wide Web (WWW) geeignet ist. Zwei Fragen stellen sich dazu: Hat man uns erstens nicht bereits konventionelle HTML-Seiten als interaktiv und multimedial angepriesen? Was bietet Java darüber hinaus? Und zweitens, genügen dafür nicht konventionelle Programmiersprachen?

Zurück zum Inhaltsverzeichnis


Anforderungen an eine webfähige Sprache

Um diese Fragen zu beantworten, muss ich einige Charakteristiken des WWW in Erinnerung rufen: Im WWW bieten Server in HTML kodierte Webseiten an. Websurfer loggen sich via Provider ins Internet ein und können dann mit Hilfe von Browsern wie Netscape oder Mosaic von einer beliebigen Plattform aus (Windows, Unix oder Mac) als Clients auf das Informationsangebot zugreifen. HTML ist nun nichts anderes als mit Formatieranweisungen, sogenanntes Tags, versehener ASCII-Text. Dies führt zu geringen Dateigrössen, vorausgesetzt man belässt es bei formatiertem Text. Wir alle wissen, dass dies nicht den Reiz des WWW ausmacht, sondern dass gerade die Verheissungen von Grafik, Video und Ton die meisten Surfer anziehen.

Webseiten integrieren diese Medien nicht direkt, sondern rufen mit speziellen Tags die externen, in den Originalformaten GIF, JPG, WAV und AVI vorliegenden Dateien, auf.

Die Interaktivität beschränkte sich ursprünglich darauf, dass man sich von Link zu Link quer durch das Netz hangeln konnte (und das Laden abbrechen, falls einem der Geduldsfaden riss). Nun ist dies eine relativ eingeschränkte Interpretation von Interaktivität, denn das Informationsangebot ist statisch, und die Datanauten wählen lediglich den Verlauf ihrer Reise. Um das ganze doch etwas interaktiver als den grossen Brockhaus zu machen, tauchten bald darauf die ersten Formulare auf: Man durfte einige Eingaben machen und erhielt darauf einige Daten aus einer Datenbank angezeigt. Diese einfache Erweiterung geht aber bereits über HTML hinaus und bedingt die Programmierung des common gateway interface. Die Benutzung des CGI ist nicht so einfach wie HTML-Programmierung und führt zu einer erheblichen Belastung des Servers und des Netzes.

Bild Beispiel für eine einfache interaktive Java-Anwendung

Aus den Mängeln und Stärken von HTML liessen sich somit gewisse Anforderungen an eine neue Web-Programmiersprache formulieren: Sie sollte systemunabhängig und einfach zu erlernen sein, ebenso schlanken Code wie HTML produzieren, aber echte Interaktivität bieten, bei der das Publikum zur Laufzeit in das Dargebotene eingreifen kann: statt einer Animation über das Funktionieren eines Kraftwerks also eine Simulation, bei der man direkt durch das Schliessen und Öffnen von Ventilen den Kühlkreislauf des Kraftwerks steuern muss. Anstelle von Multimedia-Dateien im Umfang von Megabytes waren wenige Kilobyte grosse Programme angesagt, um die Überlastung des Netzes nicht noch weiter zu verschlimmern. Wegen der Unabhängigkeit vom Betriebssystem kam damit nur eine Interpretersprache in Frage.

Die letzte Anforderung ist tückisch: seit dem Word-Macro-Virus wissen wir, dass auch interpretierte Sprachen Träger von Viren sein können. Gerade das Laden und sofortige Ausführen von Programmen direkt ab Netz führt beträchtliche Sicherheitsrisiken mit sich. Es war also unabdingbar, der neuen Programmiersprache gleich von Anfang an ein auf Vernetzung ausgerichtetes Sicherheitskonzept mit in die Wiege zu legen, beziehungsweise es direkt in der Sprache zu implementieren.

Ob das, was Steve Gosling, Bill Joy und andere Mitarbeiter von Sun schliesslich vorgestellt haben, tatsächlich eine neue Ära der Programmierung einleiten wird, oder ob es sich eher um einen Sturm in der Kaffeetasse handelt, ist meiner Ansicht nach noch offen. Die Entwicklung ist turbulent und es ist noch nicht abzusehen, ob sie uns viel mehr bringt als von Webseiten winkende Pinguine.

Bild Duke Duke, das winkende Maskottchen von Sun

Zurück zum Inhaltsverzeichnis


Erst von wenigen Browsern unterstützt

Denn Java erfüllt zwar einige der Kriterien, sie ermöglicht beispielsweise schlanke, modulare Programmierung und ist plattformunabhängig, aber sie weist auch einige Nachteile auf, die der weiten Verbreitung zur Zeit einen Riegel schieben dürften. Obwohl Java eine vollständige Programmiersprache ist, mit der sich auch netzunabhängige Anwendungen schreiben lassen, sind das wichtigste Anwendungsgebiet zur Zeit Applets, kleine in HTML-Seiten integrierte Zusatzprogramme. In der Grafik sind die verschiedenen Wege zusammengefasst, die zu Java-Anwendungen führen.

Grafik Java-Script, Java-Applets, Java-Applikationen
Java-Script, Java-Applets und Applikationen

Die Applets können als Bytecode vorliegen, den der Java-Interpreter verarbeitet, oder der Quellcode kann direkt als Java-Script in die Seiten integriert sein. Im ersten Fall braucht man einen Browser mit integriertem Java-Interpreter, im zweiten Fall einen javascriptfähigen Browser. Während der Netscape Navigator von der Version 2.0 an sowohl in der 16-Bit- wie in der 32-Bit-Version Java-Scripts verarbeiten kann, funktionieren Java-Applets nur auf einem 32-Bit-Betriebssystem, also auf Windows 95 oder NT, nicht aber unter Windows 3.1 oder Windows für Worksgroups. Browser mit Java-Interpreter sind die 32-Bit-Version des Netscape Navigators ab 2.0 und Hot Java. Der Verbreitung von Java auch nicht gerade förderlich ist der Umstand, dass der Navigator ältere Applets, die noch von der Alpha-Variante des JDK stammen, bereits nicht mehr versteht.

Für die Beschränkung auf 32-Bit-Betriebssysteme gibt es technische Gründe: Die Kompatibilität mit UNIX verlangt nach langen Dateinamen, welche ihre Hoheit Bill I seiner Gefolgschaft ja erst mit Windows 95 und NT gewährt hat. Ausserdem ist Java multithreading-fähig, d.h. es können mehrere Prozesse gleichzeitig ablaufen. Voraussetzung dafür ist ein Betriebssystem, das präemptives Multitasking beherrscht, was nur 32-Bit-Betriebssysteme bieten. Damit dürfte doch ein schöner Teil des Marktes zur Zeit der Freuden von Java verlustig gehen, weil nicht der richtiger Browser oder das richtige Betriebssystem vorhanden ist.

Zurück zum Inhaltsverzeichnis


Entwicklungswerkzeuge

Was für die Anwendungsseite gilt, ist natürlich erst recht für die Entwicklungsseite gültig: Java-Script lässt sich mit jedem beliebigen Editor realisieren, aber um kompilierte Java-Programme zu schreiben braucht es eine 32-Bit-Umgebung, denn nur hier laufen das Java Developers Kit (JDK), oder andere Entwicklungsplattformen wie Espresso von Symantec. Das JDK ist zwar kostenlos vom Netz erhältlich, aber von visuellen Entwicklungsumgebungen verwöhnte Delphi- oder Visual Basic-ProgrammiererInnen werden trotzdem kaum begeistert sein. Zwar sind nebst einigen anderen Tools Compiler, Interpreter, Debugger und Applet Viewer enthalten, aber sie lassen sich nur über die Kommandozeile bedienen. Darüber trösten auch die zahlreichen mitgelieferten Beispielapplets nicht hinweg. Mit einer solch minimalen Werkzeugkiste dürfte kaum jemand Applikationen, die über einen Blickfang auf einer Webseite hinausgehen, in Angriff nehmen. Borland hat zwar eine Entwicklungsumgebung namens Latte angekündigt und andere grosse Softwarehäuser arbeiten ebenfalls an Tools, doch ausgefeilte Programmierwerkzeuge benötigen bekanntlich ihre Zeit, so dass im Moment kein Weg um das JDK herumführt.

Zurück zum Inhaltsverzeichnis


Java's Pluspunkte

Um diese happigen Anforderungen an Programmierer und Anwender zu kompensieren, muss Java einige Vorteile bieten. Dies ist tatsächlich gelungen. Java ist plattformunabhängig, denn es läuft auf jeder Maschine, auf der sich ein Java-Interpreter und das Java-Runtime-System installieren lässt. Und das können neben Computern auch alle anderen elektronischen Geräte sein, die einen programmierbaren Chip enthalten. Besondere Hoffnungen setzt man in Netzcomputer. Sie sollen im Vergleich zu den heute üblichen Pcs erheblich reduzierte Festplatten benötigen, weil die Programme nicht mehr auf der Festplatte liegen, sondern als Java-Applets bei Bedarf direkt mit den Daten vom Netz geladen werden. Sowohl die Übertragungskapazitäten des Netzes wie die Geschwindigkeit von Java-Applets lassen mich allerdings zweifeln, ob Java und Netzcomputer in den nächsten paar Jahren eine ernsthafte Alternative zu den bestehenden Maschinen und Standardprogrammpaketen werden. Für kleinere, spezialisierte Anwendungen mag aber durchaus ein interessanter Markt entstehen.

Zurück zum Inhaltsverzeichnis


Das integrierte Sicherheitsheitskonzept

Ein weiterer wichtiger Vorteil von Java ist das integrierte Sicherheitskonzept. Von Anfang an hat man versucht, die Implementierung von bekannten Methoden, mit denen man einen Virus in ein System einzuschleust oder die Kontrolle über das Dateisystem übernimmt, in Java-Applets möglichst zu verhindern. Java war ursprünglich auf die Programmierung von Konsumelektronik ausgerichtet, was besonders robusten Code verlangt. Dies hat den Vorteil, dass undefinierte Systemzustände, die sich für eine Attacke von aussen nutzen lassen, kaum auftreten sollten. Doch Java wartet mit weiteren Sicherheitsmassnahmen auf: Vom Netz geladene Applets können weder schreibender- noch lesenderweise auf lokale Dateien zugreifen und haben auch sonst keinen Zugang zur Festplatte. Der Interpreter überprüft den Bytecode vor der Ausführung auf unerlaubte Zugriffe auf Ressourcen. Objekte aus der lokalen Klassenbibliothek lassen sich nur mit der Erlaubnis des Benutzers mit vom Netz geladenen überschreiben.

Zurück zum Inhaltsverzeichnis


Unterschiede zu C++

Die Sicherheitsanforderungen sind einer der Hauptgründe für Unterschiede zu C++, das für Java Pate gestanden hat. Das Entwicklungsteam entrümpelte deshalb das Vorbild C++ von einigen Befehlen und Elementen, die zwar praktisch sein mögen, aber fehleranfällig sind. Es gibt keine Zeiger mehr und auch keine zusammengesetzten Datentypen. Beides muss man jetzt konsequent objektorientiert in Klassen umsetzen. Dafür gibt es Mehrfachvererbung. Im Unterschied zu C verwaltet der Interpreter den Speicher selbst und gibt nicht mehr benötigten Speicher sofort frei. Um Namenskonflikte bei der Verwaltung von verschiedenen Applets zu vermeiden, hat das Sun-Team auf globale Variablen ganz verzichtet. Sowohl Variablen wie Methoden definiert man innerhalb von Klassen. Trotz dieser Angriffe auf liebgewonnene Programmiergewohnheitern, dürfte der Umstieg für C-Fans nicht schwierig sein. Sun's Behauptung, Java sei eine einfach zu erlernende Sprache, gilt deshalb nur mit dem Zusatz "einfach für C-ProgrammiererInnen".

Screenshot Java-Script
Das allereinfachste Beispiel eines Java-Scripts

Alles in allem bietet Java als Programmiersprache für Netzanwendungen tatsächlich erhebliche Vorteile, die sie vor allem für C-ProgrammiererInnen attraktiv machen. Um wie HTML zum Volkssport zu werden, ist Java als objektorientierte Sprache allerdings eindeutig zu komplex. Und auch die Profis werden für netzunabhängige Applikationen kaum von den bestehenden Compiler-Sprachen zu einer langsameren Interpreter-Sprache wechseln, umso mehr, als es zur Zeit keine Java-Entwicklungsumgebung gibt, die mit den am Markt vorhandenen anderer Sprachen punkto Ausstattung gleichzieht.

Zurück zum Inhaltsverzeichnis


Adressen und Links für Java

Die wichtigsten Informationen zu Java holt man sich am Besten von Netz. Hier deshalb einige Adressen als Ausgangspunkte:

Hier finden Sie die neueste Version des JDK von Sun:

http://www.javasoft.com/java.sun.com/products/JDK/1.0.2/installation.html

Allgemeine News zu Java:

http://java.sun.com

Beispielapplets von Sun

http://www.javasoft.com/java.sun.com/applets/applets.html

Borlands Entwicklungswerkzeuge zu Java:

http://www.borland.com/Product/java/java.html

Online-Java-Zeitschrift, monatlich neue Artikel:

http://www.javaworld.com

Neueste Informationen zu den Versionen von Netscape:

http://home.netscape.com/eng/mozilla/2.0/relnotes/

Zurück zum Inhaltsverzeichnis


Glossar



Diese Webseite wurde am 21.05.18 um 17:10 von rothen ecotronics erstellt oder überarbeitet.

Impressum

Zurück zu rothen ecotronics

Printed on 100% recycled electrons!