Dieses Kapitel versucht, Java unter verschiedenen Gesichtspunkten einzuordnen und Ihnen einen kleinen Ausblick auf Entstehung und Potential der Programmiersprache zu geben.
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].
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.
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.
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.
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.
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)
...
}
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.
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.
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