Dank des hardwareunabhängigen Konzepts von Java können Java-Programme grundsätzlich auf jedem Rechner ausgeführt werden, für den eine Java-Virtual-Machine vorliegt. Mit Kaffe gibt es bereits seit längerem eine solche Implementierung, die auch für den Amiga portiert wurde. Allerdings hat es bislang noch an der Unterstützung jeglicher grafischer Fähigkeiten gehapert. Mittlerweile gibt es erste Bilder eines Java-AWT für die Freundin. Schauen Sie selbst!
Das Konzept der von der Firma Sun entwickelten Programmiersprache Java ist etwas unkonventionell. Stellen Sie sich folgendes alltägliche Szenario vor: Ein Softwarehaus möchte eine umfangreiche Applikation für verschiedene Rechnerplattformen anbieten. Gewöhnlich wird man versuchen, den Quelltext der Anwendung in plattformabhängige und -unabhängige Teile zu zerlegen. Für jeden anvisierten Rechner muß ein Teil des Quelltextes neu angepaßt werden. Um schließlich die ausführbaren Programme zu erhalten, müssen alle Quelltexte für jede Plattform mit einem Compiler übersetzt werden. Das Ergebnis ist also jeweils vom verwendeten Prozessor und dem Betriebssystem abhängig.
Wie funktioniert Java?
Java beschreitet einen neuen Weg. Zunächst bringt jede Java-Implementierung ihr eigenes Interface zum darunterliegenden Betriebssystem mit. Dieses Interface ist im wesentlichen eine umfangreiche Klassenbibliothek, welche das jeweilige Betriebssystem-API möglichst vollständig kapselt. Nachteil dieser Methode ist selbstverständlich, daß man sich auf einen Satz generell vorhandener Funktionen beschränken muß, die jeweiligen Spezialitäten einer Plattform bleiben außen vor.
Die zweite Neuerung ist, daß ein Java-Compiler keinen Prozessor-spezifischen Code generiert, sondern sogenannten Java-Bytecode. Um diesen Code wirklich auszuführen, benötigt man für die betreffende Plattform eine »Java Virtual Machine« (JVM) – was praktisch nichts anderes ist als ein Interpreter für Java-Bytecode.
Letztlich vollzieht also erst die JVM die Transformation von plattformunabhängigem Java-Bytecode in Prozessor-spezifische Maschinenanweisungen. Damit dabei nicht die Leistung auf das Niveau eines BASIC-Interpreters absinkt, übersetzen fortschrittliche JVM-Implementierungen den Bytecode nicht schrittweise, sondern generieren immer gleich für ein ganzes Stück den entsprechenden Maschinencode. Diese Methode nennt man »just in time« compiling, woraus sich das häufig verwendete Kürzel »JIT« ergibt. Zusammen mit ausgefeilten Caching-Techniken erreicht man so akzeptable Geschwindigkeiten. Der Nutzen, der sich aus all diesem Aufwand ergibt, ist vollständige Plattformunabhängigkeit, was wiederum Entwicklung und Wartung der Software wesentlich erleichtert und somit Kosten spart.
Eine JVM-Implementierung besteht aus zwei Teilen: dem Bytecode-Interpreter sowie einer teilweise plattformabhängigen Implementierung der Java-Klassenbibliothek. Plattformabhängig ist unter anderem das »Abstract Windowing Toolkit« (AWT) – der für die Grafikausgabe zuständige Teil des Java-API. Bislang gab es für den Amiga keine Implementierung des AWT, was der Grund dafür war, daß nur Kommandozeilenprogramme ausgeführt werden konnten.
Das AmiAWT
Mit AmiAWT ist nun das erste Beta-Release eines Amiga-AWT verfügbar. AmiAWT ist bei weitem noch nicht fertiggestellt, aber immerhin die erste funktionierende Implementierung, was für uns ausschlaggebend dafür war, die Software hier kurz vorzustellen.
Wie oben beschrieben besteht eine JVM aus zwei Teilen und das AmiAWT stellt nur die Brücke zum Amiga-Betriebssystem dar. Um ein Java-Programm wirklich ausführen zu können, benötigen wir noch die andere Komponente, den Bytecode-Interpreter. AmiAWT stützt sich hierbei auf eine mittlerweile nicht mehr ganz aktuelle Version 0.8.4 der Java Virtual Machine »Kaffe«. Sowohl das AmiAWT als auch Kaffe sind im Rahmen der GNU-GPL veröffentlichte freie Software und somit jedermann zugänglich. Mittlerweile hat Kaffe eine Versionsnummer 1.0 erreicht und damit das BetaStadium verlassen. Leider funktioniert das AmiAWT aber nicht mit dieser neuen Version, so daß wir auf die wesentlich instabilere alte Fassung zurückgreifen müssen.
Die Firma Sun entwickelt ihren erfolgreichen Sprößling Java selbstverständlich ständig weiter. Im Laufe der Zeit wurden sowohl Modifikationen an der Sprache als auch der Klassenbibliothek vorgenommen. Jeweils offizielle Releases werden in Form des »Java Development Kit« (JDK) für verschiedene Plattformen veröffentlicht. Jedes JDK-Release ist mit einer Versionsnummer versehen, woraus man auf die vorhandenen Features schließen kann. Beispielsweise wurden beim Wechsel von JDK 1.0.2 auf JDK 1.1 wesentliche Änderungen im AWT-Teil vorgenommen, weshalb für JDK 1.1 geschriebene Programme nicht mehr unter Version 1.0.2 lauffähig sind.
Sowohl das AmiAWT als auch Kaffe 0.8.4 unterstützen nur das JDK 1.0.2. Wenn Sie also selbst ein kleines Testprogramm schreiben möchten, sollten Sie darauf achten, nur die »alten« Features zu nutzen. Um das AmiAWT einmal auf dem eigenen Rechner in Aktion zu erleben, sollten Sie sich als erstes die im Kasten genannte Software besorgen.
Installation
Zur Installation wechseln Sie in einem Shell-Fenster in das Verzeichnis, wo sich das Archiv »kaffe-0_8_4-bin.tar.gz« befindet. Dort werden wir nun die Installation durchführen. Zunächst entpacken Sie das Archiv mit
tar xzvf kaffe-0_8_4-bin_tar.gz
in das aktuelle Verzeichnis und wechseln anschließend mit
cd kaffe-0.8.4-bin
in das neu erzeugte Unterverzeichnis. Nun müssen Sie einen Platz festlegen, wo Sie die Java-Klassen für Kaffe ablegen möchten; zum Beispiel »Work:Kaffe«. Richten Sie anschließend ein Assign »kaffe:« auf dieses Verzeichnis
assign kaffe: Work:Kaffe
und kopieren anschließend das AmiAWT dort hinein:
copy amiawt.zip kaffe:
Es ist nicht nötig, dieses ZIP-Archiv zu entpacken – Kaffe erledigt den Zugriff völlig transparent. In das gleiche Verzeichnis müssen anschließend die restlichen Java-Klassen aus dem JDK 1.0.2 kopiert werden. Entpacken Sie also das JDK 1.0.2 in ein Verzeichnis Ihrer Wahl, wobei Sie den Ihrem JDK entsprechenden Packer verwenden müssen (das JDK wird für verschiedene Plattformen und in unterschiedlichen Formaten ausgeliefert). Das Sun-Solaris-JDK ist eine Tar-Datei wie oben Kaffe und kann genauso entpackt werden. Anschließend kopieren Sie die Klassenbibliothek nach kaffe:
copy «ihr Verzeichnis»/java/lib/classes.zip kaffe:
Zum Schluß muß noch die Umgebungsvariable »CLASSPATH« gesetzt werden, damit Kaffe die Klassen auch wiederfindet. Geben Sie also in der Shell ein:
set CLASSPATH=".;kaffe:classes.zip;kaffe:amiawt.zip"
Nun können Sie in das Unterverzeichnis »test« wechseln und eines der mitgelieferten Demo-Programme starten. Zum Beispiel das Programm »WindowTest«:
/kaffe-0.8.4 WindowTest
Wenn alles geklappt hat, sollten Sie eine Ausgabe wie in unserem Bild »Das erste Mal« erhalten, wenn Sie das beiliegende Demoprogramm starten. Wie schon erwähnt, ist AmiAWT noch eine unvollständige Version und nicht komplett lauffähig. Man kann nur Programme mit Beschränkungen (s.o.) ausführen. Lassen Sie sich trotzdem den »Amiga-Kaffee« schmecken!