von Paul Conte
Beobachtet man die Aufmerksamkeit, die Java in den Medien genießt, drängt sich die Frage auf, ob Java wirklich ein wunderbares neues Werkzeug ist, mit dem man Software herstellen kann, die besser ist als alles, was wir jemals erlebt haben – oder nutzen die Hersteller schamlos die clevere Namensgebung aus, um uns davon zu überzeugen, daß ihre Produkte so unverzichtbar sind wie Kaffee- der wirkliche Java? Skepsis scheint angebracht. Doch die Erfahrungen mit Java zeigen, daß es sich hierbei um eine wirklich aufregende neue Entwicklung im Bereich der Software-Technologie handelt. Bilden Sie sich selbst eine Meinung oder machen Sie den Test „Ihr Javaprofil“ und stellen Sie fest, wie gut Java zu Ihnen paßt.
Java Applets und Anwendungen
Java ist eine Programmiersprache, mit der * kleine Programme (Applets) in Word-Seiten * die Entwicklung von eigenständigen Anwendungen eingefügt werden können. Wie die meisten Programmiersprachen verfügt Java über die Möglichkeit zum Deklarieren von Variablen, Durchführen von Rechenvorgängen zur Ablaufkontrolle mittels If-Abfragen und Schleifenstrukturen. Applets laufen immer in einem Web-Browser ab, dem sogenannten „Sandkasten“ und sind daher in ihren Fähigkeiten begrenzt. So kann ein Applet normalerweise nicht auf eine Festplatte zugreifen. Applets werden üblicherweise dafür verwendet, daß Interface zu einer Web-Seite aufzumotzen oder die Usereingabe zu verbessern.
Richtige Anwendungen: Java als ein besseres C++
Obwohl Java dem Web seinen kometenhaften Aufstieg verdankt, so ist doch der Sandkasten nicht seine wahre Bestimmung. Java kann auch anstelle von C++, Visual Basic, Delphi und – mit der Zeit – RPG verwendet werden, um vollständige Anwendungen zu schreiben. Noch wichtiger ist, daß man Java-Anwendungen für fast jede vorstellbare Plattform schreiben kann, z.B. für alle wichtigen IBM-Betriebssysteme (OS/400, OS/390, AIX, OS/2), alle Versionen von Windows, MacOS, und praktische alle Versionen von Unix. C++ ist die einzige vergleichbare Sprache mit einer derartigen Bandbreite. Java verfügt über alle wichtigen Programmierfunktionen: arithmetische Rechenvorgänge, Zeichenketten-Operationen, Programmlogik, Datenbankzugriff, User Interface und Communications. Es steht C++ in nichts nach – mit der einen Ausnahme, daß es keinen Pointerzugriff auf Speicheradressen gibt, was aber für kommerzielle Anwendungen nicht erforderlich ist. Ein wichtiger Punkt ist auch, daß Java Applets zwar interpretiert werden, Java Anwendungen aber zur Verbesserung der Performance kompiliert werden können. Es mag zwar noch eine Weile dauern, bis Java Compiler das hohe Leistungsvermögen der heutigen C++ Compiler erreicht haben. Doch sollte kompiliertes Java für die meisten kommerziellen Anwendungen ausreichend schnell laufen. Java hat zwei Fähigkeiten, die bei C++ fehlen: Einfachheit und Sicherheit. Java kommt ohne einige der sehr komplexen C++ Konstrukte aus. Hierzu gehören die mehrfache Vererbung (Klassen) und der Einsatz von Pointern (Speicheradressen). Stattdessen bietet Java eine Anzahl sehr eleganter Features, die den Programmiervorgang und die Lesbarkeit des Codes wesentlich verbessern. So kann man mit Java Interfaces für relationale Datentypen definieren, und zwar unabhängig von der Implementierung der Datentypen. Dadurch entfallen die meisten Probleme, die sich aus dem Prinzip der mehrfachen Vererbung bei C++ ergeben. Datentypen und Vererbung bilden die wichtigsten Stützpfeiler objektorientierter Programmiersprachen und sind für Systemsoftware wie kommerzieller Anwendungen gleichermaßen unverzichtbar. In Java gibt es keine direkte Speicherverwaltung und keine Objekt-Deallocation. Diese beiden Features führen bei C++ und Delphi wiederholt zu Programmabstürzen und dem Blockieren von PC’s. Mit V3R7 hat IBM RPG IV mit Pointern ausgestattet, so daß die Gefahr der Pointerfehler jetzt auch in RPG IV-Programmen besteht. Bei Java erinnert die Art des Umgangs mit Objekten stark an SmallTalk, wobei auch hier die Möglichkeit zur automatischen Speicherplatzfreigabe besteht. Es gibt zwar auch bei Java verschiedene Möglichkeiten, Zuordnungsfehler zu machen, doch fängt der Compiler oder die Runtime-Umgebung fast alle derartigen Fehler ab und gibt eine aussagefähige Nachricht aus. So könnte ein Java Programm zwar immer noch abstürzen, doch würde ein Fehler sich nicht so dramatisch auswirken wie bei C++, Delphi oder RPG IV, und es ist viel leichter, Fehler aufzuspüren als mit einem C++ Fehlerpointer. Von allen verbreiteten Programmiersprachen verfügt Java über den elegantesten Umgang mit Datentypen. Javas Datentypensystem ist wesentlich einfacher und verständlicher als C++ und bietet wesentlich mehr Sicherheit. Auch Delphi und Visual Basic 4.0 (VB 5.0 ist noch zu neu für einen Vergleich) ist es in dieser Hinsicht weit überlegen. Mit diesem Datentypensystem kann man Datentypen wie Angestellter, Projektressourcen und Druckausgabe erstellen, um sie dann als Programmvariablen zu deklarieren. Compiler und Runtime prüfen die Zulässigkeit der Operationen, die mit einer Variablen durchgeführt werden, auf Grund des Datentyps dieser Variablen. Die meisten Sprachen mit einem guten Datentypensystem benötigen entweder komplexe Regeln für die Definition relationaler Datentypen (wie bei C++) oder gewähren nur begrenzte Möglichkeiten zur Definition relationaler Datentypen wie bei Delphi.
Java als besseres Visual Basic
Die Entwickler von Java haben viel von den Erfolgen und Mißerfolgen früherer Sprachen wie Pascal/Delphi, C/C++ und vielleicht auch Visual Basic gelernt. Infolgedessen ist Java ganz besonders einfach zu erlernen. Es wird den meisten Programmierern wesentlich einfacher fallen, die Vorzüge der OO-Programmierung mit Java kennenzulernen als mit Delphi, C++ oder Visual Basic. Die Eigenschaften, denen Visual Basic seinen großen Erfolg verdankt, gelten auch für Java: * Visual Basic ist relativ preiswert (jedenfalls die Grundausstattung) – Java-Produkte gibt es ab 99 Dollar.
* Für Visual Basic existieren sehr viele Lehrbücher und eine große Zahl von Schulungsangeboten – für Java sind es schon 159 Publikationen.
* Visual Basic verfügt über eine ausgezeichnete graphische drag-and-drop Entwicklungsumgebung – dies trifft auch für Java zu (schon von einem halben Dutzend wichtiger Anbieter, einschließlich Microsoft). Visual Basic verfügt über einen großen Komponenten-Markt – der Java-Komponenten-Markt zeigt bereits sprunghaftes Wachstum, und JavaBeans werden einen zusätzlichen Schub erzeigen. Wer Programmieren mit Visual Basic oder Delphi gemocht hat, wird Java einfach lieben! Aber mit Visual Basic, so gut es auch sein mag, kann man keine einzige Zeile AS/400 oder RS/6000 Code schreiben, das geht aber mit Java. Allgemein gilt, daß Javas große Stärke die „100% Portabilität“ der Java Anwendungen sei. Es ist zwar wichtig, daß Web Applets „überall laufen können“, doch hat das für Anwendungen keine so große Bedeutung. Wirklich wichtig ist, daß die erworbenen Fähigkeiten im Umgang mit Java weiter genutzt werden können, um Programme für die AS/400, Windows und andere Systeme zu erstellen. Was die Software-Portabilität anbelangt, so werden viele großen kommerziellen Java Anwendungen immer noch einige wenige systemspezifische „Codestückchen“ enthalten. Eine der bekannten Schwächen von Visual Basic stellt seine eingegrenzte Verwendbarkeit für Großprojekte dar. Besonders Programmierteams werden nicht ausreichend unterstützt. Hier bietet Java wesentlich bessere Möglichkeiten. Große Entwicklerteams werden sich freuen, daß IBM’s VisualAge Team Technologie, die ihre Stärken bei der SmallTalk Entwicklung bereits beweisen konnte, auch für VisualAge for Java verfügbar sein wird. Mehr über IBM’s Visual Age for Java in unserer nächsten Ausgabe. JavaDoc, ein beliebtes Java Tool, das gleichermaßen für kleine wie große Entwicklungsprojekte nützlich ist, wird mit den meisten Java Implementierungen mitgeliefert. JavaDoc erstellt anhand des Java Source-Codes HTML (Hypertext Markup Language) für Webseiten, die eine vollständige Dokumentation der Javaklassen und -methoden enthält. Man kann sogar besondere Sourcecode-Kommentare einfügen, die der Compiler ignoriert und die von JavaDoc extrahiert und in die Webseite mit dem Rest der Dokumentation gestellt werden. In diese JavaDoc-Kommentare können mittels HTML die Formatierung der Kommentare eingefügt werden, z.B. die Ausgabe in Großbuchstaben. So bietet JavaDoc eine elegante Methode für die Erstellung von Dokumentation, die dann jedem Programmierer mittels eines Webbrowsers zur Verfügung gestellt werden kann.
Kommerzielle Anwendungen: Java als besseres RPG
Nun gut, Java ist also besser als C++ und besser als Visual Basic. Doch wie behauptet sich Java gegenüber RPG IV? Heute hat RPG IV Java zwei Dinge voraus: Der AS/400-Compiler für RPG IV ist bereits verfügbar, und man kann I/O-Operationen auf einen 5250 Bildschirm ausgeben. Man sollte nicht gleich das Schreiben von RPG IV-Code aufgeben, doch mit der Verfügbarkeit des Java/400-Compilers werden viele zu dem Schluß kommen, daß Java weit überlegen ist. Weitere Beispiele: Das Benutzerinterface einer Anwendung soll erstellt oder überarbeitet werden? Kein Problem mit dem drag-and-drop-Interface-Builder, der über eine Palette von Dutzenden von Interfacekomponenten verfügt. Ein Datenbankzugriff ist erforderlich? Mit dem Data Access Builder auf die DB/2 400 File aufsetzen und schon ist das Problem gelöst. Es gibt schließlich vorgefertigte Java-Klassen mit Ein-/ Ausgabeoperationen und genau den Feldern, die man zuvor aus einer einzelnen oder einer zusammengeführten Datei ausgewählt hat. Soll eine Anwendung mittels Javas RMI (Remote Method Invocation) erzeugt werden, prüft der Proxibuilder den Code, damit die erforderlichen Kontrollinformationen und Anwendungsdaten zwischen Client und Server ausgetauscht werden. Mehr hierzu und weiteren Tools in der nächsten Ausgabe im Artikel zu IBM’s Viusal Age for Java. Für Java spricht auch, daß IBM und andere Anbieter kommerzielle Java-Klassen für alles vom Währungshandling bis zum Kundenstamm in San Francisco Frameworks Projekt anbieten. So eröffnet Java schließlich auch den AS/400-Entwicklern die Möglichkeit zur Nutzung von Komponenten-Angeboten. Man muß sich vor Augen halten, daß nur Java-Entwicklern diese Komponenten-Supermärkte offen stehen werden, während RPG- und C-Entwickler hier keine Chancen haben. Den Gerüchten, daß RPG IV auf die eine oder andere Weise Zugriff auf Java-Features erhalten soll, darf man keinesfalls Glauben schenken. Natürlich wird ein beliebiges AS/400-Programm eine Java-Anwendung starten können oder mit einer solchen kommunizieren. Die Verwendung von vorgefertigten Java-Klassen wie Währung, Kunde oder Konto bleibt dem RPG-Programmierer mit Sicherheit verschlossen. 5250-Bildschirme stellen gegenüber Java kein Problem dar. Für das Dialoghandling mit einem 5250-Bildschirm erstellt man die Bildschirm I/O in einem RPG-Programm. Java unterstützt den Aufruf eines entfernten AS/400-Programms, so daß die übergabe des Bildschirminhalts zwischen der Java-Anwendung und dem RPG-Programm erfolgt. Theorethisch besteht zwar die Möglichkeit, daß IBM oder andere Anbieter Java-Klassen für den 5250-Zugriff entwickeln, doch ist es aufgrund des hohen erforderlichen Aufwands unwahrscheinlich. Außerdem bieten Java/400-Anwendungen ein hervorragendes graphisches Benutzerinterface.
Da der Artikel zu lang war, um ihn vollständig ins Internet zu setzen, finden Sie die übrigen Abschnitte mit den Überschriften:
Und noch mehr Java
Java auf der AS/400
Und die Datenbank?
Javas Zukunftsaussichten
Ihr Java Profil


