Wie bereits im Vorwort erwähnt, wollen wir uns der Java-Euphorie gerne anschließen, sie aber nicht bedingungslos übernehmen. Dieser Abschnitt unternimmt den Versuch einer Bewertung und versucht, einige der häufigsten Mißverständnisse auszuräumen. Wir wollen dabei zunächst zu einigen Thesen Stellung nehmen, die immer wieder artikuliert werden und häufig zu überzogenen oder falschen Annahmen über das Wesen von Java führen.
Das ist vollkommen falsch, denn JavaScript ist eine von Netscape entwickelte, proprietäre Script-Sprache zur Erweiterung von HTML-Seiten. Sie ist syntaktisch an Java angelehnt, bietet aber bei weitem nicht so viele Features. Sie wird nicht in Bytecode kompiliert, sondern interpretiert und erlaubt weder die Konstruktion von Applets noch von eigenständigen Applikationen. Als Script-Sprache erlaubt sie einfache Manipulationen am Layout und der Reaktionsfähigkeit von HTML-Seiten.
Diese gern postuliert These aus der Sprachbeschreibung ist nur bedingt richtig. Java ist eine Programmiersprache mit fortschrittlichen Eigenschaften und muß wie eine solche erlernt werden. Sie ist einfacher zu beherrschen als C oder C++, denn es gibt weniger Raum für Überraschungen und demzufolge weniger Anfängerfehler. Auch die Klassenbibliothek ist leichter zu verstehen, denn sie wurde neu enworfen und kommt ohne die Altlasten von gewachsenen Bibliotheken aus. Trotz allem erfordert der Umgang mit Java und seinen Bibliotheken ein bestimmtes Maß an Einarbeitungszeit, bevor man als Entwickler produktiv wird.
Die Quellcode-Portabilität von Java-Programmen ist etwas höher als die von C- oder C++-Programmen. Dies ist hauptsächlich dem Verzicht auf explizite Pointer, der genauen Spezifikation der elementaren Datentypen und der Vielzahl an zusätzlichen Bibliotheken zu verdanken. Der große Vorteil von Java besteht darin, daß die kompilierten Programme portabel sind. Ein einmal übersetztes Programm, das innerhalb des Java-Standards entwickelt wurde, wird auf jeder Plattform laufen, die eine Java-VM und die erforderliche Laufzeitumgebung zur Verfügung hat.
Da Java-Programme in Bytecode übersetzt werden, der nicht direkt vom Prozessor ausgeführt werden kann, muß ein Interpreter diese Aufgabe übernehmen. Dadurch können rechenintensive Java-Programme um den Faktor 10 bis 20 langsamer sein als vergleichbare C/C++-Programme.
Dieses schlechte Ergebnis relativiert sich in der Praxis durch mehrere Umstände. Einerseits sind nur wenige Programme ausgesprochen rechenintensiv. Statt dessen verbringen sie oft einen Großteil ihrer Zeit damit, auf Eingaben des Benutzers oder langsame Datenbank- oder Festplattenzugriffe zu warten. Zudem steigt die Performance von Java-Programmen durch die Entwicklung von Just-In-Time-Compilern, Native-Code-Compilern oder Java-Prozessoren ständig und nähert sich zunehmend der von kompiliertem C/C++-Code an.
Das Performance-Problem kann daher als temporäres Problem angesehen werden - falls es für den speziellen Typ Anwendung überhaupt existiert. Viele Beobachter gehen heute davon aus, daß Java-Programme in zwei bis drei Jahren mit derselben Geschwindigkeit laufen werden wie C/C++-Programme.
Diese Behauptung resultiert vor allem aus drei Beobachtungen. Zum einen haben viele der bisher in Java entwickelten Anwendungen Spielzeug- oder Democharakter. Meist als Applet realisiert, haben sie lediglich die Aufgabe, eine Homepage zu verschönern oder die Java-Kentnisse ihrer Entwickler zu demonstrieren. Echten Mehrwert bieten dagegen nur wenige Applets. Größere Applikationen, die komplett in Java geschrieben wurden, sind kaum auf dem Markt.
Zweitens ist das Look&Feel von Java-Programmen nicht ausgereift. Tatsächlich bildet das AWT nur einen geringen Anteil der in den jeweiligen plattformspezifischen Fenstersystemen verfügbaren Möglichkeiten ab. Die wenigen Dialogelemente stehen allerdings portabel zur Verfügung. Mit Hilfe der gegenwärtig entwickelten Java Foundation Classes soll dieses Dilemma gelöst werden. JFC bietet einen umfassenden Satz komplexer Dialogelemente und stellt ihn plattformübergreifend zur Verfügung. Dabei ist es möglich, das Look&Feel der jeweiligen Anwendung zur Laufzeit umzustellen und so dem Geschmack und den Kenntnissen des jeweiligen Benutzers anzupassen.
Die dritte Beobachtung besagt, daß Java voller Fehler steckt. Während dies weniger für die Sprache selbst, ihre Werkzeuge oder die elementaren Eigenschaften der Klassenbibliothek gilt, kann das AWT ein gewisses Maß an Fehlerhaftigkeit nicht verhehlen. Obwohl mit der Version 1.1.2 viele der frühen Bugs behoben wurden, kann es auch in seiner heutigen Fassung nicht als stabiles System bezeichnet werden. In der jüngsten Version 1.1.3 wurden sogar neue Fehler eingeschleppt, die vielen Entwicklern den Umstieg schwermachen.
Wenn man das Anwenderinteresse zugrunde legt, ist Java schon jetzt die mit Abstand erfolgreichste Programmiersprache der letzten Jahre. Wie oben gezeigt, hat Java in den ersten 18 Monaten seit Ausgabe der Version 1.0 eine immense Verbreitung erfahren. Die Sprache war Anlaß für Hunderte von Büchern und Zeitschriftenartikeln, und es entstand eine Reihe von stark frequentierten Newsgroups, die das Interesse an Java deutlich machen. Alle größeren Softwarehersteller unterstützen die Sprache und haben konkrete Produkte angekündigt oder bereits realisiert. In vielen Stellenanzeigen werden bereits heute Java-Kenntnisse vom Bewerber verlangt.
Natürlich kann heute noch keiner sagen, ob Java auch langfristig erfolgreich sein wird und auch noch in zehn oder zwanzig Jahren verwendet wird. Drei der Kernfaktoren, die den Erfolg von Java ausmachen, sprechen allerdings schon heute dafür:
Was überwiegt nun? Die Vorteile oder die Nachteile? Diese Frage ist schwer zu beantworten, und die Antwort muß jeder für sich selbst finden. Dieses Buch wäre nicht geschrieben worden, wenn der Autor nicht der Meinung wäre, daß es die Vorteile sind.
Tatsächlich läßt sich Java heute ohne weiteres dazu verwenden, anspruchsvolle Programme, Tools oder Applets zu entwickeln. Wie dabei mit den bekannten Nachteilen und Unzulänglichkeiten umzugehen ist, muß projektbezogen entschieden werden. Alleine die umfassenden Aktivitäten aller großen Hard- und Softwarehersteller und ihre Bekenntnisse zu Java lassen erwarten, daß die Kinderkrankheiten ausgemerzt werden und in nicht allzu ferner Zukunft eine Reihe stabiler und ausgereifter Entwicklungsumgebungen zur Verfügung steht. Wer dann bereits auf Erfahrungen in Java-Programmierung zurückgreifen kann, hat möglicherweise den entscheidenden Vorteil im Wettbewerb mit der Konkurrenz.