1. Einordnung von Java

Dieses Kapitel versucht, Java unter verschiedenen Gesichtspunkten einzuordnen und Ihnen einen kleinen Ausblick auf Entstehung und Potential der Programmiersprache zu geben.


[ 1.1 ], [ 1.2 ], [ 1.3 ], [ 1.4 ], [ 1.5 ], [ 1.6 ], [ © ]

1.1. Einleitung

Noch ein Tutorial zu Java? Es gibt doch schon so viele!
Viele Bücher auf dem Markt berücksichtigen vor allem die neuen Möglichkeiten, die Java im Bereich des Internets bietet. Dem Leser wird suggeriert, es wäre der neuste Trend, seine Webseiten mit leicht veränderten Programmen anderer Leute zu beleben, möglichst schnell möglichst bunt. Das vorliegende Material soll in die ernsthafte objektorientierte Programmierung mit Java einführen. Demnach wird es verstärkt um die Erstellung von Applikationen, d.h. die Entwicklung von Programmen, wie man sie auch in anderen Sprachen wie C++ oder PASCAL umsetzen könnte, gehen. Man kann hier nur vieles eleganter lösen, manches läßt sich aber auch nur über Umwege realisieren. Dabei soll anhand praxisbezogener Problemstellungen auf die Besonderheiten der Java-Programmierung eingegangen werden.

Zur Java-Programmierung braucht man ein Software-Entwicklungssystem (SDK, in diesem Fall JDK).
Damit sie die enthaltenen Programme verwenden können, benötigen Sie mindestens Version 1.1 der Programmiersprache, wie z.B. das am 18.02.1997 erschienene JDK 1.1, bzw. die fehlerbereinigte Version 1.1.2 (30.05.1997). Mit neuen Versionen ist im Sommer (1.2) bzw. Ende des Jahres (2.0) zu rechnen. An der TU Dresden kann man u.a. im Willersbau A119 (Win95) bzw. auf der rcs52 (Sun) nach Eingabe von "setsoft java" das JDK 1.1.1 nutzen. Weitere Informationen zu den unterstützten Plattformen im
Kapitel 1.4.
Beachten Sie, daß aktuelle Browser wie der Netscape Navigator 3 oder der Micro$oft Internet Explorer 3 bisher nur Applets nach dem Sprachstandard 1.0 ausführen können.
Auf dem Internet gibt es viele Tutorials und FAQs, z.B. [http://www.apl.jhu.edu/Classes/Notes/Hall/java], welche jedoch meist auf der Sprachversion 1.0 (JDK1.02) basieren, weshalb die erläuterten Techniken, vor allem bei Grafik- und IO-Programmierung, oft veraltet (deprecated) sind. Versuchen Sie, veraltete APIs zu verwenden, wird Ihnen dies zwar gelingen, aber der Compiler wird entsprechende Warnungen ausgeben.
Die neuste Version dieses Skriptes sowie Links, Applets und mehr finden Sie unter [http://rcswww.urz.tu-dresden.de/~schoenfu] bzw. am Lehrstuhl für Systementwicklung [http://rks2.urz.tu-dresden.de/wwwise].


1.2. Das Internet

Das Internet boomt!
Aufgrund seiner einzigartigen Struktur bietet das Internet auch in der Zukunft noch viele Perspektiven. Hauptvorteile sind z.B. die geringe Anfälligkeit gegenüber Störungen aufgrund der netzartigen Struktur, die Unabhängigkeit von einzelnen Herstellern und die Universalität der Protokolldefinitionen. Wegen dieser und vieler anderer Eigenschaften können auch heute proprietäre Netze dem Internet nicht das Wasser reichen. Als proprietär bezeichnet man ein Produkt, bei dessen Nutzung man sich in die Abhängigkeit eines Herstellers begibt, d.h. nur er kann Updates, Verbesserungen, u.ä. anbieten.

Das klassische Betriebssystem für Internet-Server und Clients ist Unix.
Standardmäßig ist hier z.B. das Einloggen auf einem entfernten Rechner mit Telnet möglich, den man dann fernsteuern kann. Ähnlich sind auch Konferenzschaltungen mit TALK oder über IRC möglich. Dateien werden mit dem FTP-Programm (file transfer protocol) übermittelt und über elektronische Post oder das Usenet werden Nachrichten ausgetauscht.

Große Boom des Internets basiert nicht unwesentlich auf dem Dienst WWW.
Das World Wide Web wurde erst vor ein paar Jahren am Schweizer CERN entwickelt. Der erste Browser war NCSA Mosaic. Über das HTTP-Protokoll kommuniziert ein Client (in diesem Fall der Browser) mit einem WWW-Server, der auf Anforderung beliebige Dateien über das Netz schickt. Als Dokumentenstandard wählte man die auf SGML (Standardized General Markup Language) basierende Hypertext Markup Language (HTML). Sie ist sehr flexibel und besteht aus normalem Text, in den spezielle Steuercodes, sogenannte Tags, mit denen man z.B. Umlaute oder Formatierungen realisieren kann, eingebettet sind. Auch das Einbetten von Grafiken, Sounds, Videos und anderen Dokumenten ist so möglich. Unbekannte Formate kann der Browser über sogenannte Plugins (Erweiterungen) verarbeiten. Dies ermöglicht grafisch sehr ansprechende Seiten und machte das Internet auch für Firmenpräsentationen und unbedarfte Endbenutzer interessant. Das wohl Interessanteste sind jedoch die sogenannten Hyperlinks. Durch das Anklicken eines Textes oder Bildes gelangt man zu einem (evtl. kontext-verwandten) Dokument. Neben dem bloßen Darstellen von Informationen als Text mit Grafiken und Tabellen kann man aber auch Dateien herunterladen oder durch Formulare Informationen an den Server zurückschicken. Trotz vieler Erweiterungen ist mit HTML jedoch nach wie vor nicht alles umsetzbar.

In diese Lücke springen nun Java und JavaScript.
JavaScript ermöglicht vor allem die dynamische Erstellung von Webseiten und das Prüfen von Eingaben. Es entstand aus Netscape's LiveScript und enthält in ein paar vordefinierten Klassen einen Teil der Funktionalität von Java. JavaScript wird u.a. von Netscape's und Micro$oft's Browsern unterstützt.

Java ist eine Allzweckprogrammiersprache, mit der u.a. sogenannte Applets programmiert werden können. Diese werden in Webseiten integriert und beim Laden dieser automatisch gestartet. Durch die interaktiven Möglichkeiten dieser online ausführbaren Programme eröffnen sich ganz neue Möglichkeiten wie Client-lastige Datenauswertung, Chats oder Spiele. Am häufigsten trifft man heute auf Laufschriften, bewegte Grafiken oder ähnliches.

Elementare Kenntnisse werden im weiteren vorausgesetzt.
Um alles zu verstehen, sollten Sie mindestens eine höhere Programmiersprache wie C oder PASCAL beherrschen und auch den groben Aufbau einer HTML-Datei kennen.
Wer sich für eine genaue Abhandlung von HTML interessiert, sei auf das hervorragende Buch "HTML-Dateien selbst erstellen - Das Kompendium für HTML-Entwickler" von Stefan Münz (Franzis-Verlag 1996) verwiesen, welches auch im Internet [
http://www.netzwelt.com/selfhtml] erreichbar ist. Vom gleichen Autor stammt auch ein Tutorial zu JavaScript.


1.3. Was ist Java?

Sun: " Java is a simple, object-oriented, distributed, interpreted, robust, secure, architectural neutral, portable, high-performance, multithreaded, and dynamic language."

Java ist eine Allzweckprogrammiersprache.
1990 entwickelte James Gosling bei Sun, einem bekannten Hersteller von UNIX-Workstations, eine Programmiersprache namens Oak für sein Projekt "Imagination", einen SGML-Editor. Sie stellte im wesentlichen eine Abwandlung von C++ und Objective C dar, in die alle Ideen eingeflossen waren, die frustrierte Entwickler in jahrelanger Erfahrung gesammelt hatten.
Im April 1991 gründete Sun die Tochterfirma First Person Inc., die versuchen sollte, Oak als interne Programmiersprache für Heimelektronik vom Videorecorder bis zum Toaster, zu vermarkten. 1993 suchte Time Warner nach Ideen für die Settop-Boxen für das interaktive Fernsehen. Im Hinblick auf diese Anwendungen mußte die Programmiersprache gewisse Anforderungen erfüllen. Sie mußte in Echtzeit laufen, sicher und zuverlässig sein sowie sehr kompakt. Aus dieser Zeit stammt auch noch das Maskottchen Duke.
Leider hatte das Projekt nicht den rechten Erfolg und die Firma wurde aufgelöst. Zu dieser Zeit begann jedoch gerade das WWW seinen Siegeszug und Patrick Naughton programmierte an einem Wochenende einen HTML-Browser, der Oak-Applets starten konnte. Daraus entstand der heutige HotJava-Browser und das neue Zielgebiet der Programmiersprache wurde das Internet.

Auch Internet-Programme müssen kompakt sein.
Vor allem die Gegenspieler von Micro$oft gebrauchen im Zusammenhang mit Windows gern den Begriff Fatware, denn in viele Programme werden doppelt und dreifach Standardbibliotheken eingebunden, die die Programme aufblähen. In Java gibt es ein Standard-API, dessen Klassen auf dem lokalen Rechner liegen, ein kleines Java-Applet kann so auch mit wenigen hundert Bytes auskommen, wogegen z.B. ein leeres Delphi- oder C++-Programm kaum unter 100k groß ist und oft noch riesige DLLs mitbringt.

Außerdem braucht man einen sicheren Schutz gegen Viren oder das Ausspionieren des Rechners.
Java-Programme werden vor der Ausführung überprüft, dadurch können z.B. keine Informationen an fremde Rechner geschickt werden und der Rechner kann durch fehlerhafte Programme nicht abstürzen. Fehleranfällige und überflüssige Elemente wie Pointer, Operatorüberladung, Speicherfreigabe oder die Benutzung beliebiger Zahlen als Booleantypen wurden eliminiert, was zu einheitlicheren Programmen und leichterer Pflege führt. Näheres dazu in Kapitel 2.

Der Name Java entstand in einer Brainstorming-Session bei Sun.
Er geht auf das Slangwort für Kaffee in den USA zurück, welches Hauptexportgut der Insel Java ist. Es ist ein Anspielung auf das heiße und aromatische Getränk, welches Programmierer gern und viel trinken.

Sun: "Write once, run anywhere, on anything, safely."


1.4. Grundvoraussetzungen

Java ist portabel.
Ein kompiliertes Java-Programm besteht aus dem sogenannten Bytecode mit den Befehlen eines virtuellen Prozessors. Bytecode und Klassenformat sind vollkommen hardware-unabhängig. Die Java-Plattform wurde schon von vielen Herstellern in ihre Betriebssysteme integriert. Zu nennen sind hier u.a. Linux, Windows (ab Win95 OSR2), OS/2 4.0 und natürlich Sun Solaris.
Micro$oft hat nach letzten Meldungen gegen den Lizenzvertrag mit Sun verstoßen, der es nicht erlaubte, Java als eigenständiges Programm zu vermarkten. Außerdem erzeugt Micro$oft's Visual J++ inkompatiblen Java-Code. Dadurch und durch die Integration von M$' eigenem, Win95-spezifischem Active-X wird die Plattformunabhängigkeit von Java sabotiert, weshalb Sun Micro$oft von der weiteren Java-Entwicklung ausschloß. Daher ist es fraglich, ob zukünftige Windows-Versionen wie Win97 oder NT5.0 "hauseigene" Java-Unterstützung besitzen werden.

Für viele Plattformen gibt es Aufrüstmöglichkeiten oder Java-fähige Web-Browser.

Was brauche ich zur Java-Programmierung?
Die folgenden Erklärungen gehen davon aus, daß sie das kostenlose JDK von JavaSoft [http://www.javasoft.com] benutzen. Offizielle Distributionen gibt es für Win95/NT, Solaris und MacOS. Das Entwicklerkit enthält den Compiler, das API (Application Programming Interface), einen Appletviewer, Debugger und andere Werkzeuge. Zu allen Programmen und Klassen ist der Sourcecode enthalten. Die aktuelle Version des Entwicklerkits ist 1.1. Auch die im HTML-Format vorliegende Dokumentation wird unbedingt benötigt. Alles in allem nimmt das ganze einiges über 30 MB Festplattenplatz ein. Wenn Sie nur auf die Version 1.0.2 zurückgreifen können, werden sich die meisten Programme nicht übersetzen lassen.
Wer vorher mit Turbo Pascal o.ä. gearbeitet hat, wird eine integrierte Entwicklungsumgebung mehr vermissen, als jemand der es gewöhnt ist, unter UNIX zu programmieren. Das JDK enthält den Kommandozeilencompiler javac, der mit bestimmten Parametern, z.B. der Quelldatei aufgerufen werden muß und eine .class-Datei erzeugt, bzw. eine Vielzahl von Fehlermeldungen erzeugt.
Die Quelldatei wird mit einem normalen Texteditor erzeugt. Es empfiehlt sich natürlich ein Editor, der Autoindent (automatisches Einrücken) beherrscht, wie z.B. der von Turbo Pascal und auch Syntax Highlighting (Schlüsselwörter sowie Kommentare und Zeichenketten werden farbig hervorgehoben) ist ganz nützlich. Es gibt natürlich gerade für Windows 95 auch eine Menge integrierter Umgebungen, die einen guten Editor besitzen und den Compiler automatisch aufrufen können. Zu nennen sind hier u.a. Jpad [http://www.modelworks.com] und Kawa [http://www.tek-tools.com/kawa], die beide als Shareware im Internet zu haben sind.
Auch kommerzielle Programme werden angeboten, wie z.B. der Java Workshop von Sun, Visual J++ von Micro$oft, Borland's OpenJ-Builder, Symantec Café und viele andere. Für den Anfang reichen aber ein guter Editor und das JDK vollkommen.
Wenn Ihre Entwicklungsumgebung dies nicht per Mausklick für Sie tut, starten Sie das übersetzte Programm durch Eingabe von "java name". Im neuen Windows 95 (OSR2) ist Java schon eingebaut, der Interpreter (mit schneller JIT-Compiler) heißt hier jview. Bisher wird aber nur Sprachversion 1.02 unterstützt. Unter Linux lassen sich die Programme direkt starten, bisher allerdings ebenfalls erst Version 1.02. Applets werden in eine HTML-Seite eingebettet und müssen mit einem Java-kompatiblen Browser betrachtet werden.

Der Syntax für das Einbetten von Java-Applets ist folgender:

<APPLET
  CODEBASE = codebaseURL // Pfad für Klassendateien
  ARCHIVE = archiveList  // jar-Archive, die Daten und Klassen enthalten
  CODE = appletFile ...oder... OBJECT = serializedApplet // Klassendatei
  ALT = alternateText    // wenn Java abgeschaltet ist
  NAME = appletInstanceName
  WIDTH = pixels  HEIGHT = pixels  // Fenstergröße
  ALIGN = alignment      // Ausrichtung
  VSPACE = pixels  HSPACE = pixels // Abstand
>
    <PARAM NAME = appletAttribute1 VALUE = value> // zu übergebende Parameter
    <PARAM NAME = appletAttribute2 VALUE = value>
    . . .
    alternateHTML // wenn Browser kein Java versteht
</APPLET>

Programmcode muß leicht lesbar und verständlich sein.
Der Compiler sucht beim Übersetzen nach Tokens, dazwischen liegende Zeichen (Leerzeichen, Zeilenumbrüche, ...) und Kommentare werden ignoriert. Nutzen Sie dies, um ihren Quellcode übersichtlich zu gestalten. Rücken Sie dazu Blöcke ein, d.h. z.B. nach einer öffnenden Klammer rücken Sie die folgenden Zeilen mit zwei Leerzeichen oder TAB ein, bis wieder eine schließende Klammer folgt. Dies erhöht die Leserlichkeit drastisch. Weiterhin ist es üblich, Schleifenvariablen i,j,k,... bzw. counter oder ähnliches zu nennen.
Im Gegensatz zu PASCAL ist Java case-sensitiv, d.h. der Compiler unterscheidet Groß- und Kleinschreibung. Vergeben Sie Namen nicht nach Rechtschreibregeln, sondern nach der optimalen Übersicht. Es empfiehlt sich, bei aus mehreren Wörtern zusammengesetzten Namen, den ersten klein und die folgenden groß zu schreiben, z.B. printScreen(); oder ähnliches. Per Konvention beginnen Variablennamen mit einem kleinen und Klassennamen mit einem großen Buchstaben. Beachten Sie jedoch, daß Sie eine einmal gewählte Schreibweise im ganzen Programm beibehalten müssen. Eine häufige Fehlerquelle ist auch das Benennen von Variablen mit reservierten Worten.


1.5. Programmiersprachen und Stile

Programmsprachen kann man zum Beispiel nach ihrer Entfernung von der Maschine einteilen.
Der schnellste und kompakteste Code ist zweifelsfrei durch Assemblerprogrammierung zu erreichen. Die Maschine wird direkt programmiert, einzige Erleichterungen bieten Sprungziele, Makros und Trivialnamen für Befehle.
Später entwickelten sich Interpretersprachen wie z.B. BASIC, die sehr weit von der Maschine entfernt waren. Im Gegensatz zur Maschinensprache sind die Befehle hier sehr komplex, z.B. wird das "Bildschirm löschen"-Kommando (Cls) intern in viele kleine Einzelaktionen zerlegt. Der Quelltext wird hier zur Laufzeit Befehl für Befehl übersetzt und ausgeführt. Das führt oft zu inakzeptablen Laufzeiten.
Compiler setzen hier an. Der Quelltext wird schon vor der Laufzeit übersetzt und als Maschinenprogramm gespeichert. Der Anwender hat mit dem Quelltext nichts zu tun und startet die Binärdatei. Das ist das heute übliche Prinzip z.B. unter DOS oder Windows. Die übersetzten Programme sind natürlich längst nicht so optimiert wie "handprogrammierte" Maschinenprogramme, aber durch die Komplexität moderner Prozessoren wie z.B. des Pentiums kann nur noch ein Compiler wissen, welcher Code wegen Branch prediction, Register renaming, Cache-Größe und ähnlichem am schnellsten sein wird. Außerdem, wer will schon in einem 60.000 Zeilen-Assemblercode einen Fehler suchen?

Auch die verschiedenen Programmierstile kann man in Kategorien einteilen.

Spaghetticode ist weniger ein Fachbegriff als vielmehr eine Metapher.
Sie bezeichnet sehr gut die Art wie Assembler- oder BASIC-Programme ablaufen, nämlich von Anfang bis zum Ende relativ linear.

Beispiel: Auf den Bildschirm schreiben
Code für Bildschirm löschen;
Code zum auf den Bildschirm schreiben;
...

Prozedurale Programmierung strukturiert kontext-verwandte Befehle in Prozeduren und Funktionen.
Programme bestehen aus Funktionen und Prozeduren, die Daten manipulieren. Eine Prozedur ist dabei eine Funktion, die nichts zurückliefert. Daten sind meist global und überall manipulierbar. Das kann zu schwer nachvollziehbaren Seiteneffekten führen, da sich die Funktionen die Daten teilen. Erste Schritte zur Wiederverwendung von Programmcode sind aber schon vorhanden.

Beispiel: Auf den Bildschirm schreiben
Prozedur clearScreen { Code für Bildschirm löschen; }
Prozedur writeScreen { Code zum auf den Bildschirm schreiben; }

Hauptprogramm {
clearScreen aufrufen
writeScreen mit Text als Parameter aufrufen
...
}

Objektorientierte Sprachen wie Java haben neue Konzepte zu bieten.
Das Ziel ist in erster Linie leicht zu wartender und pflegender Code. Dazu bedient man sich der Art wie auch Menschen die Dinge um sich herum wahrnehmen. Ein elementarer Begriff ist der der Klasse. Klassen enthalten wiederverwendbaren Code zur Erstellung von Objekten. Sie können entweder instantiiert, um individuelle Objekte zu erzeugen, oder in Subklassen erweitert werden. Dem menschlichen Verständnis ähnlich ist nun z.B., daß man Objekten aufgrund der Superklassen (übergeordnete Klassen) von denen sie abstammen, Eigenschaften zuordnen kann. Da z.B. ein VW Polo ein VW ist (von der Superklasse VW abstammt), der wiederum ein Auto ist (von der Superklasse Auto abstammt), kann man sagen, daß ein Polo vier Räder hat, da er diese Eigenschaft von der Superklasse Auto erbt. Ein Polo kann wiederum auch aus verschiedenen Objekten zusammengesetzt sein (composite object), z.B. aus vier Rädern (Subsysteme).
Ein Beispiel für eine Subklasse ist z.B., daß man schon eine fertige Klasse besitzt, die ein Rechteck behandelt, es z.B. zeichnet, seinen Flächeninhalt berechnet, usw. Will man nun auch farbige Rechtecke zeichnen, kann man eine Subklasse von Rechteck anlegen, in der man die Methoden überschreibt, die anders sind. Alle anderen werden geerbt. Ein Beispiel wäre z.B., die Zeichenmethode des farbigen Rechtecks so zu implementieren, daß man die Systemfarbe ändert, dann die fertige Zeichenmethode von Rechteck aufruft und die Systemfarbe danach wieder zurücksetzt.
Die objektorientierte Programmierung beruht auf einer Hierarchie, in der Klassen nach unten hin immer spezieller und nach oben immer abstrakter werden. Ein Objekt ist ein abstrakter Datentyp mit seinen Methoden. Auf private Daten, Instanzvariablen (private Variablen) und private Methoden kann nicht direkt, sondern nur über öffentlichen Methoden zugegriffen werden.

Dieses Prinzip nennt man Kapselung.
Stellen Sie sich eine Liste vor, die verschiedene Daten enthält. Sie verwalten z.B. Kundendaten. Angenommen die Anzahl der Aufträge pro Kunde ist anfangs auf einen 8bit-Datentyp beschränkt und Sie ändern diesen später in einen 16bit-Datentyp, so müssen Sie alle Funktionen, die auf die Liste zugreifen, umschreiben. Haben Sie nun viele Programme, die dies tun, so können leicht Fehler entstehen.
In der objektorientierten Programmierung werden die Daten lokal zusammen mit dem Methoden in einer Klasse zusammengefaßt, die auf sie zugreifen. Um beispielsweise ein Listenelement zu entfernen, würden Sie dem Objekt Liste den Auftrag delete(item) geben. Wie dies jedoch intern realisiert ist, ist für das Hauptprogramm nicht ersichtlich. Ein einzelnes Element erhält man z.B. über den Aufruf der Methode "objectAtIndex(index)" der Klasse Liste. Direkt auf die Liste zuzugreifen, ist nicht möglich.

You must imagine a system as a collection of classes and methods that knows how to perform tasks.

Man kann Methoden in unterschiedlichen Klassen gleiche Namen geben.
So kann man komplizierte Methodennamen vermeiden. Dies entspricht auch der menschlichen Wahrnehmung und wird Polymorphie genannt. Wenn man z.B. an einem Radio oder an einer Lampe den Einschalter drückt, können intern ganz unterschiedliche Prozesse ausgelöst werden, dem Benutzer ist dies aber egal, er will nur, daß das Gerät eingeschaltet wird. Was er damit auslöst, ist nur im Zusammenhang mit dem jeweiligen Objekt eindeutig.

Beispiel: Auf den Bildschirm schreiben
class Bildschirm {
Methode clear { Code für Bildschirm löschen; }
Methode write { Code zum auf den Bildschirm schreiben; }
}

Hauptprogramm {
ein Bildschirm-Objekt namens screen anlegen
dem screen sagen, er soll seine clear-Methode aufrufen
dem screen sagen, er soll seine write-Methode aufrufen (evtl. mit Parameter)
...
}


1.6. Zukunftsaussichten

Java schafft neue Vertriebsmöglichkeiten.
Die vier klassischen Begriffe was das Copyright betrifft, sind bislang Public domain (alle Rechte aufgegeben), Freeware (kostenlose Weitergabe erlaubt), Shareware (kostenlose Testversion, bei intensiver Nutzung muß Vollversion erworben werden) und Vollversion (entgeltlich erworben, Weitergabe verboten). In Zukunft könnte es mit Java auch Software zum Mieten geben, bei der man für jede Nutzung bezahlen muß.
Unix- und Internetfans wird der fehlende Sourcecode bei vielen Applets nicht gefallen, da dies mit einer Philosophie kollidiert.

Eines von Suns Mottos ist "Think authors not publishers".
Man eliminiert den Mittelsmann zwischen Autor und Kunde. Oft fehlen Firmen Geld und Beziehungen, Software weltweit bewerben und verkaufen zu können. Bisher! Im Internet kann sich jede Firma präsentieren, Produkte und Service anbieten, ohne Mittelsmann. So werden auch viele zeitraubende Vorgänge überflüssig und man kann Software direkt günstiger anbieten. Dies ist die Chance für den besten Autor, zu gewinnen.

Java läuft überall.
Micro$ofts Philosophie war immer, daß die Anwendung auf ein Betriebssystem aufsetzt, das wiederum auf eine bestimmte Hardware aufsetzt. In Zukunft könnten die Nutzer in die Situation kommen, wo es genügend Software in Java gibt (jetzt existieren schon über eine halbe Million Programme) und man die Hardware wählt, die diese Programme am schnellsten ausführt. Heute gibt es z.B. den RISC-PC von Acorn, der extrem wenig Strom verbraucht, bei einer mit einem Pentium Pro vergleichbaren Leistung auch mit 200 MHz nur Bruchteile kostet und eine der schnellsten Java-Plattformen ist. Er ist aber bisher für Privatanwender weniger eine Alternative, da Allerweltssoftware auf dieser zum Intel x86 inkompatiblen Architektur nicht lauffähig ist. Das könnte sich bald ändern. Es gibt sogar schon eine Java-Version von Corel Office, der in den USA verbreitetsten Office-Software. Wer auf proprietäre (herstellerabhängige) Software setzt, wird es also in Zukunft (hoffentlich) schwer haben.

Java hat die Macht, einiges zu verändern.
Sun hat schon die ersten Prozessoren auf dem Markt, die Java-Bytecode hardwaremäßig verarbeiten können, Features wie Bilddekomprimierung und Speicherverwaltung bereits im Microcode enthalten und sehr preisgünstig sind. Desweiteren ist schon eine kleine Version des Chips um einen zweistelligen Faktor schneller als ein Just in Time Compiler (JIT) auf einem schnellen Pentium. Die Chips heißen pico- micro- und Ultra-Java und sollen zwischen $25 und $100 kosten.

Sun: "The network is the computer"

JavaOS wird das Betriebssystem für Netzcomputer (NCs).
Sun vertreibt jetzt schon JavaStations, sogenannte Zero administration clients, die ihr Betriebssystem und alle Applicationen von einem Server laden und keine lokalen Massenspeicher oder leistungfähige Prozessoren benötigen. Muß ein Gerät ausgetauscht werden, kann sofort weitergearbeitet werden. Neue Updates des Betriebssystems oder von Applikationen werden automatisch von allen Clients genutzt. Da das Einrichten und Verwalten (ganz zu Schweigen von den vielen Problemen) von Windows-Arbeitsrechnern schon bei geringer Anzahl zur Sisyphusarbeit wird, sicher eine erfolgversprechende Sache.

Zuguterletzt ist es auch für den Programmierer eine Erleichterung, plattformunabhängig entwickeln zu können.
Vorbei die Zeit in der man für ein paar unterstützte Plattformen in mühsamer Arbeit ein abstraktes Klassenmodell bauen mußte, für jede Plattform eigene Grafik-, Sound- und andere Routinen. Selbst mit dem so portablen C++ kann das echt in Arbeit ausarten.


«« [ Inhalt ] »»

Copyright für Texte, Programme und Design 1997 by Dirk Schönfuß
WWW: http://rcswww.urz.tu-dresden.de/~schoenfu
e-mail: schoenfu@rcs.urz.tu-dresden.de