Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

23.01.1997 - 

Software-Optimierung/Hoffnung aller Unabhängigen

Jetzt Java - trotz aller Manöver von Microsoft

23.01.1997

Im Grunde nicht viel mehr als eine objektorientierte Programmiersprache nebst zugehörigem Laufzeitsystem, hat Java zunächst vor allem im Bereich des World Wide Web rasende Verbreitung gefunden. Obwohl es ursprünglich für ganz andere Zwecke entworfen wurde, löst es gleich mehrere Hauptprobleme des Web.

Das WWW krankt seit jeher an der effizienten, aber nicht gerade benutzerfreundlichen Dialogorientierung der Web-Anwendungen. Ein am Bildschirm ausgefülltes Web-Formular wird erst nach der Übertragung zum Server auf seine Vollständigkeit und Konsistenz überprüft. Eventuelle Fehler machen bei so mancher Browser-Software eine Neueingabe der Daten nötig.

Einzigartige Vorteile

Java gestattet es, kleine Programme, sogenannte Applets, in eine Web-Seite einzubinden, die eine direkte Interaktion mit den Benutzern ermöglichen, etwa um Plausibilitäten von Eingaben zu überprüfen. Applets können aber auch die Informationsdarstellung im Web verbessern, wie Beispiele für Videowiedergabe oder statistische Aufbereitungen zeigen.

Mit diesen Möglichkeiten allein wäre Java allerdings eine Web-Erweiterung unter vielen geblieben. Was es so einzigartig macht, sind jedoch seine Plattformunabhängigkeit und Sicherheit. Java-Programme werden nicht wie üblich in einen Hardware-abhängigen, sondern in einen speziellen Maschinencode übersetzt, den ein Interpreter ausführt. Diese virtuelle Maschine bildet einen einfachen, idealisierten Prozessor auf der tatsächlichen Hardware nach und muß für jede Plattform, die Java unterstützt, eigens implementiert werden.

Die virtuelle Maschine und das Laufzeitsystem, eine Klassenbibliothek, gewährleisten, daß ein Programm nur einmal übersetzt werden muß, um auf allen Java-unterstützenden Systemen ausführbar zu sein. Ein Programm kann also unter Windows, OS/2, Unix oder auf dem Macintosh ohne Anpassung oder Rekompilierung laufen. Mit einem Quellcode für alle Systeme macht Java die Entwicklung von Anwendungssoftware endlich plattformunabhängig.

Damit nicht genug, der virtuelle Code läßt sich automatisch daraufhin prüfen, ob er in sich konsistent ist und ob bestimmte Schnittstellen genutzt werden oder nicht. Wenn in einem Java-Programm ein zulässiger Funktionsumfang definiert ist, läßt sich dessen Einhaltung überprüfen. Die Möglichkeit, Applets für den Web-Benutzer sicher zu machen, ist eines der ausschlaggebenden Argumente für den Erfolg von Java im Internet.

Kein Net-Surfer muß befürchten, mit einer Web-Seite unkontrollierbare Java-Software oder gar Viren auf seinen PC zu laden, solange der benutzte Browser die Sicherheitschecks durchführt. Für die Software-Entwicklung bietet der überprüfbare Java-Code aber möglicherweise noch ganz andere Analyse- und Konstruktionsansätze.

Keine dieser Eigenschaften ist völlig neu - lediglich die richtige Mischung zur richtigen Zeit am richtigen Ort, dem Web, resultierte im kometenhaften Aufstieg von Java. Das Konzept einer virtuellen Maschine wurde bereits in den 60er Jahren in Systemen wie Smalltalk, UCSD-Pascal und Anfang der 90er in Microsofts P-Code-Engine realisiert. Zu ihrer Zeit konnten sich diese Ansätze ohne die starke Notwendigkeit der Plattformunabhängigkeit und Sicherheit des heutigen Web allerdings nicht durchsetzen.

Das Internet hat Java schnell wachsen lassen, doch welche Chancen hat die Programmiersprache über das Web hinaus? Die grundlegenden Eigenschaften von Java lassen viele IT-Verantwortliche und Entwickler aufhorchen. Die objektorientierten Grundlagen von Java und dessen einfache Erweiterbarkeit sind für den modernen Software-Entwurf eine Notwendigkeit. Die Plattformunabhängigkeit und automatische Prüfbarkeit lassen hohe Einsparungen bei der Programmentwicklung erwarten.

Noch sind viele Verantwortliche etwas zögerlich, wenn es um konkrete Java-Projekte geht. Die Erfahrungen mit C++ haben gezeigt, daß Objektorientierung allein kein Garant für die Vereinfachung der Software-Entwicklung ist. Ein Vergleich von Java mit C++ zeigt, daß kaum zwei Sprachen ähnlicher in der Definition und gleichzeitig unterschiedli- cher in der Implementierung sein könnten.

Die komplexe Syntax und die vielfältigen Eigenschaften von C++ haben sich zum Schrecken vieler Softwareprojekte entwickelt. Der Schulungsaufwand für diese Programmiersprache ist unbestritten hoch. Sie ist darüber hinaus hochgradig plattforminkompatibel. Oft können nicht einmal Bibliotheken bei verschiedenen Compiler-Implementierungen angewandt werden. Manche Hersteller liefern daher den Sourcecode zu C++-Klassenbibliotheken gleich mit.

Beschränkung auf die wichtigsten Elemente

Java hat eine stark an C++ erinnernde Syntax, beschränkt sich aber in der Menge der Sprachmittel auf die wichtigsten Elemente, ohne dabei an Flexibilität und Erweiterungsfähigkeit einzubüßen. So verzichtet es zum Beispiel auf die Definition von Operatoren, auf indirekte mehrfache Vererbung und auf Zeiger. Java ist in der heutigen Form sicher nicht für systemnahe Programmierung wie etwa Gerätetreiber geeignet, übliche Anwendungen lassen sich aber problemlos und effizient schreiben.

Die Plattformunabhängigkeit der Java-Entwicklung überwiegt die denkbaren Nachteile einer Hochsprache bei weitem. Java lehnt sich mit seinen Spracheigenschaften und in der Implementierung eher an Smalltalk an, ohne dem Entwickler ein völliges Umdenken abzuverlangen. Manche Eigenschaften, beispielsweise die Parallelisierung der Programmausführung bereits durch Sprachmittel, setzen diese Entwicklungsplattform deutlich von anderen objektorientierten Systemen ab.

Die Einbußen bei der Ausführungsgeschwindigkeit, die die Virtualisierung mit sich bringt, lassen sich auf Implementierungsfragen des Laufzeitsystems reduzieren. Just-in-time-Compiler übersetzen Java-Programme zur Laufzeit auf der jeweiligen Plattform in hardwarespezifische Maschinensprache, so daß die Ausführungszeiten denen konventioneller objektorientierter Sprachen entsprechen. Erste Implementierungen sind verfügbar und werden fortlaufend verbessert.

Für die Praxis ist es weitgehend unerheblich, ob C++, Smalltalk oder Java die bessere Sprache ist. Die Vorteile der objektorientierten Software-Entwicklung sind unbestritten, und Java unterstützt alle dazu erforderlichen Eigenschaften. Die Notwendigkeit einer gründlichen Analyse und eines vorausschauenden Entwurfs, um die Vorteile der Objektorientierung über den gesamten Systemlebenszyklus bis hin zur Wartung zu nutzen, kann einem auch Java nicht abnehmen.

Die inhärente Plattformunabhängigkeit bringt unter den Gesichtspunkten Ersparnis von Entwicklungskosten, Investitionssicherung, Cost of Ownership und Cost of Change ein entscheidendes Plus für Java. Für die Entwicklung von Software ist diese Sprache gleichermaßen attraktiv. Die entscheidenden Fragen sind, wann Java für Mainstream-Entwicklungen reif ist und wie sich der Markt entwickelt.

Nach etwas mehr als einem Jahr Praxiseinsatz kann Java noch nicht den Reifegrad der etablierten Systeme erreicht haben. Der Web-Anspruch "Alles, und das gestern" trägt nicht gerade zur Besonnenheit der Software-Entwickler bei. Die wichtigsten Bestandteile der Architektur, die virtuelle Maschine und die Sprachdefinition, sind bereits sehr stabil. In absehbarer Zeit wird ein Standardisierungsgremium ihre Weiterentwicklung übernehmen.

Kleinere Probleme ändern nichts an den Vorteilen

Was die Stabilität der Software an sich angeht, hängt diese im wesentlichen vom Reifegrad der verschiedenen Implementierungen ab. Kleinere Probleme der Systeme sind normal und ändern an den grundlegenden Vorteilen von Java nichts. Ebensowenig wie Lücken im Sicherheitsmechanismus einzelner Produkte, die, wie sich gezeigt hat, schnell behoben werden können.

Die Weiterentwicklung von Java geht unterdessen munter voran. Javasoft, das eigens gegründete Tochterunternehmen von Java-"Erfinder" Sunsoft, hat in letzter Zeit mehrere Schnittstellen vorgestellt, die die Nutzung der Sprache noch wesentlich verbessern sollen. Zu den wichtigsten zählt sicherlich die Java-Beans-Spezifikation, die eine Aufteilung von Java-Programmen in frei kombinierbare Komponenten erlaubt. Die Referenzimplementierung ist mit dem neuen 1.1-Release des "Java Software Developer Kit" von Javasoft für das erste Quartal 1997 angekündigt. Erste Werkzeuge wie "Visual Cafe" von Symantec unterstützen die Spezifikation bereits.

Erste Anwendungen kommen auf den Markt

Nach Portierungen der Entwicklungsumgebung und der Laufzeitsysteme sowie nach der Entwicklung erster Werkzeuge kommen nun die ersten Anwendungen auf Basis von Java heraus. Die Corel Corporation hat beispielsweise die gesamte Office-Suite auf Java portiert, Lotus Development arbeitet an entsprechenden Komponenten für "cc:mail" und "Notes", Netscape nutzt Java bereits seit längerem im "Live-Wire"-Web-Entwicklungssystem, und Opentext ermöglicht Workflow-Anwendungen mit Java in "Livelink".

Verschiedene Hersteller von Embedded Systems haben ebenfalls Java adaptiert, womit die Programmiersprache an ihre Wurzeln zurückkehrt. Ursprünglich wurde sie nämlich unter dem Namen "Oak" für Embedded Systems entwickelt, was die hohe Flexibilität und Plattformunabhängigkeit des Ansatzes erklärt.

Trotz der weiten Verbreitung ist inzwischen ein Ringen um die Java-Entwicklung entbrannt. Störenfried der allgemeinen Euphorie ist Microsoft. Trotz aller Lippenbekenntnisse fürchtet der Softwaregigant Java wie der Teufel das Weihwasser.

Windelweich am Ja zum Standard vorbei

Microsoft hat sich mit seinem extremen Marktanteil im Desktop-Bereich und seinen Ambitionen im Server-Markt mehr Feinde als Freunde gemacht. Durch das Potential von Java hat sich eine unausgesprochene "Anyone-else-but-Microsoft"-Allianz gebildet, die das Quasimonopol von Microsoft brechen will.

Microsoft seinerseits hat selbstverliebt die Internet-Euphorie erst mal gründlich verschlafen und befindet sich derzeit in der größten technologischen Aufholjagd der DV-Geschichte. Java gegenüber betreibt Microsoft dieselbe "Divide-and-conquer"-Strategie, die schon in anderen Fällen erfolgreich war. Die Lizenzierung von Java durch Microsoft war, wie jüngste Ereignisse zeigen, nicht mehr als ein Mittel, um Zeit zu gewinnen.

Inzwischen hat Microsoft ein eigenes Java-Entwicklungssystem, "Visual J++", auf den Markt gebracht. Abgesehen davon, daß dieses manchen legalen Java-Code schlichtweg nicht übersetzt, ist das ganze Werkzeug auf die Windows-Plattform und nicht auf Plattformunabhängigkeit ausgerichtet. Microsofts Ankündigung, Windows-spezifische Erweiterungen für Java zu definieren, hat die Java-Gemeinde prompt wachgerüttelt und die Formierung einer Opposition zur Folge gehabt.

Die Kampagne "100 percent pure Java" von Javasoft ist eine verständliche Reaktion auf diese Bestrebungen. Microsoft wird dessenungeachtet weiter als Wolf im Schafspelz im Java-Markt wildern, denn mit der weiteren ungeteilten Entwicklung von Java müßte das Unternehmen ernsthafte Einbußen im Desktop-Markt hinnehmen. Einmal von der Zentrierung auf die Windows-Plattform befreit, ließen sich Anwendungen auf beliebigen Systemen ausführen und auf beliebigen, differenzierten Leistungsanforderungen gerechten Kombinationen von Systemen einsetzen. Auch die vielzitierte Wintel-Allianz zwischen Microsoft und Prozessorhersteller Intel würde dadurch an Bedeutung verlieren.

Damit nicht ein Grabenkrieg zwischen verschiedenen Java-Varianten ausbricht, bedarf es einer schnellen Standardisierung der Schlüsseltechnologien durch eine neutrale Organisation. Mit Javasoft, so argumentiert Microsoft zu Recht, wird Java bislang auch nur von einem Hersteller bestimmt. Als Standardisierungsgremien sind deshalb branchenübergreifende Organisationen wie die Open Group oder die Object Management Group (OMG) im Gespräch.

Als Nebenkriegsschauplatz zeichnet sich zudem die Interoperabilität von Java mit anderen Software-Umgebungen ab. Das von Microsoft definierte Common Object Model (COM) steht dabei der auf breitem Konsens der IuK-Industrie beruhende Common Object Request Broker Ar- chitecture (Corba) der OMG gegenüber. Ein weiteres Beispiel für eine Entscheidung zwischen einem plattformspezifischen und einem plattformunabhängigen Ansatz.

Mit Java hat die DV-Industrie die Chance, eines ihrer Hauptprobleme, die Software-Entwicklung, mit industriellen Methoden in den Griff zu bekommen. Mit dieser plattformunabhängigen Sprache würde nicht nur die Kleinstädterei der verschiedenen Plattformen ein Ende haben, ohne Leistungsunterschiede zwischen verschiedenen Implementierungen zu verhindern. Mit Java wäre auch der Weg geebnet, um auf Basis einer Technologie neuesten Stands die Software-Erstellung von den Fesseln der "handwerklichen" Individualentwicklung zu lösen. Auf der Grundlage plattformunabhängiger, objektorientierter Softwarebausteine ließen sich Systeme im großen Stil konstruieren. Sollte sich dies bewahrheiten, könnte die Informationsindustrie ihre Zeitrechnung auf vor und nach Java beziehen.

Der Entwicklung nicht passiv zuschauen

In diesen Tagen entscheidet sich die Zukunft der Informationsindustrie bis weit in das neue Jahrtausend hinein. Anwender sollten diese Entwicklung nicht passiv erwarten, sondern aktiv mitgestalten. Die Beschäftigung mit Java ist ein Muß für jeden, der mit der Entwicklung Schritt halten will. Der Entwurf einer Java-Strategie und eines Migrationspfads für die eigene Software-Entwicklung ist angesichts des ungeheuren Potentials dringend anzuraten. Bleibt zu hoffen, daß sich die Industrie der Chance, die Java bietet, würdig erweist und diese nicht durch partikuläre Interessen verspielt.

Angeklickt

Selten hat ein Softwaresystem soviel Vorschußkredit erhalten wie die Programmiersprache Java von Sunsoft. Von einem weiteren Internet-Phänomen bis hin zur alleinseligmachenden Software-Umgebung reichen die Bewertungen der Technologie. Was steckt hinter all den Lobpreisungen? Kann Java die extrem unterschiedlichen Erwartungen erfüllen? Ein kritischer Blick auf die Realitäten soll helfen, die Rolle von Java für die eigene IT-Strategie besser bewerten zu können./*Michael Wagner ist als Berater und Publizist in München tätig