JAVA - Eine lebende Programmiersprache

Streamlined in Opposition zu den Microsoft Schinken positioniert sich JAVA als Entwicklungs- sprache für vollgraphische Applikationen. JAVA ist, wie der Renner am Beginn des PC-Zeit- alters BASIC, interpretierend und bietet SUN (Promotor von JAVA) im Desktop Bereich eine bessere Position bei der Argumentation gegenüber dem allgegenwärtigen Marktführer.

ist durch die interpretierende Technik hardwareunabhängig, in JAVA geschriebene Programme sind aber auch langsamer als zum Beispiel C++ Geburten; aber was spielt dies im RISC- Zeitalter schon für eine Rolle. Spürbar ist die Trägheit von JAVA Applikationen sicher auf herkömmlichen INTEL Rechnern und gegen diese möchte sich SUN ja abheben.JAVA bettet sich im INTERNET Trend ein, indem WWW-Browser entworfen wurden, welche JAVA Codesequenzen aufnehmen und im Zuge eines Down-loads von WWW Seiten einer Abarbeitung zugeführt werden. Diese Kombination bildet die „Lebenden Dokumente“, in einer einfach ausgedrückt, daß irgendwelche Maxln als Grafik zwischen den Zeilen herumspringen, um Aufmerksamkeit zu erregen, aufwendiger indem zum Beispiel ein bedienbares SpreadSheet in einer visualisierten Seite eingebettet ist. Zum Verständnis sei erwähnt, daß die SpreadSheet Software nicht EXCEL oder LOTUS 123 ist, sondern jener Code, welcher im Zuge des Downloads mitgeladen wird. Ein solches Spreadsheet bietet dann naturgemäß nicht annähernd die Möglichkeiten eines Standard-Spread-Sheet-Software Pakets, sondern nur jene Funktionalitäten, welche vom Ersteller der Seite beabsichtigt wurden.Für den User bedeutet dies eine einfache, zielorientierte Bedienbarkeit ohne Ballast von Wissen zu allen möglichen Varianten, die bei der Bedienung eines solchen Programms zu berücksichtigen sind ...Warum ich mich mit dieser Thematik beschäftige und für mich JAVA als Programmierwerkzeug ein interessantes Thema ist, möchte ich kurz darlegen.Mein Leben als Programierer begann noch vor der MS-DOS Zeit. Damals wurden die ersten Steuerungen mit dem INTEL 8080 Prozessor geboren und nach höherem strebend, durfte ich bereits 1981 an Multiprogram-Systemenmit 32-Bit Hardware mitarbeiten; ein Leben mit Begriffen wie Echtzeit, Multitasking und Multiuser. Dann im MS-DOS Boom war ich offensichtlich zu überqualifiziert, mich mit dessen archaischen Methoden anzufreunden. Ein Lichtblick war noch das Betriebssystem Concurrent-DOS (CCP/M-86), unter welchem wir ein kleines System für eine Steuerungsüberwachungsanlage schufen. Durch sonstige Enttäuschungen über die Gedankenwelt der PC-Programmiertechniken verschlief ich leider den AMIGA, auf dem nach heutiger Sicht bereits bei dessen Anfängen anspruchsvollere Programmsysteme eingebettet werden konnten. Windows 3.x war ein muß aber für den Enthusiasten von quasigleichzeitigen Abläufen unabhängiger Programmteile ein Horror, also wartete ich zu, beschäftigte mich mit UNIX, meinte daß OS/2 schlecht am Markt platziert ist und fühle mich seit WIN95 erstmals im Massenstrom zu Hause. Und was hat dies mit JAVA zu tun?JAVA erlaubt multithread Techniken, verschiedene Programteile werden quasigleichzeitig abgearbeitet. JAVA läuft nur unter Betriebssystemen mit echten multitasking Eigenschaften, was im INTEL-PC Massenmarkt erstmalig durch WIN95 bereitsteht. So läßt die Geburt von JAVA unmittelbar nach WIN95 den Streamline erahnen, der offensichtlich unter dem Motto „Es begab sich ...“ vollzogen wird.JAVA wurde nicht unter der Prämisse entwickelt, alten Standards gerecht zu werden, auch wurde auf Emulierungen solcher verzichtet. Die verfügbaren Interpreter, WWW-Browser mit solchen und Development-Kits verlangenneben echten multitasking Eigenschaften mindestens eine 32-Bit Hardware und Filesysteme, welche lange Filenamen zulassen.Von der Existenz von JAVA erfuhr ich im Oktober 1995 aus der Kolumne Steurer (jeweils in der Samstagausgabe der „Presse“) .Anfang Februar 1996 beschloß ich, mich näher mit der neuen Sprache zu befassen, wobei die Repräsentanz von SUN im Internet zwar knappe aber doch ausreichende Informationsangbote bietet. Bis jetzt (mitte März) habe ich bereits 3 Versionen durchlebt und bin nun beim JDK 1.0 gelandet. Auffallend war, daß bei den standard Download-Angeboten von SUN, die Dokumentation nicht zusammengehalten wird, sondern bloß Ergänzungen oder Abänderungen beiliegen. Als Browser steht mir nunmehr Netscape 2.0 zur Verfügung. Als Oberfläche genügt mir MS-WIN95-Plus auf einem 486er Color-Notebook mit 16 MB Speicher und 430 MB Plattenkapazität, wobei mir nur ein Soundblaster abgeht.Weitere Informationen zu JAVA kann man ueber die Internet NEWS-Groupscomp.lang.javacomp.lang.javascripterhaschen, doch zeigt sich, daß die dort behandelten speziellen Detail-Fragen für den Anfänger wenig hilfreich sind.Auch entdeckte ichhttp://wwwipd.ira.uka.de/~espresso/http:/www.conveyor.com/conveyor-java.htmlim Internet.Beim Einstieg in der Geburtsphase einer Softwaregattung ist bereits die Orientierung, welche Komponenten wie zusammengehören, ein zeitraubender Lernprozeß, da wie schon erwähnt, keine konsistente oder vollständige Dokumentation zur Verfügung steht.So brachte der Wirrwarr von Versionen neben meinem Bedürfnis, auf der gerade aktuellsten Version aufzusetzen, mehrere Downloads mit sich (alle bei 3MB Umfang, wobei der SUN Server wegen Überlastung oft nicht erreicht werden konnte) :1.) hotjava-alpha3-win32-x86.exe mit 3.849.659 Bytes (enthält den Browser hotjava, eine formale Sprachbeschreibung und eine umfangreiche System-Bibliothek, mit der man offensichtlich sogar einen Browser schreiben koennte)2.) JDK-beta.exe mit 2.735.479 Bytes (enthält vor allem ein Programm, mit dem alte Java-Programme aus der Alpha Release auf Beta Stand gebracht werden können)3.) JDK-1_0-win32-x86.exe mit3.720.379 Bytes (erst unter diesem JDK gelang es mir, Programme effizient zu debuggen)Diese Downloads waren selbstextrahierende Exe-Files, wobei jedoch, wie sonst gewohnt, keinerlei Windows-Installationsroutinen impliziert sind. Somit muß man sich die Environment-Variablen selbst setzen (auf DOS-Niveau).Jeder Beginn sind die DEMOS, wobei ich mich zuerst auf die Applikation „Hangman“ stuerzte. Ich gab dann dem Programm einen anderen Namen, kompilierte es neu, nahm kleine Veränderungen vor und freute mich, daß die Auswirkungen meinen Erwartungen entsprachen.Beim Kompilieren fiel mir auf, daß derlaufende Compiler sich in einer Dos-Box zeigt. Da diese Dos-Box nach dem Ende des Vorganges sofort verschwand, egal, ob mit oder ohne Fehlermeldungen, legte ich mir eine .BAT Datei an, welche die Environment-Variablen setzt und in der Zeile nach javac.exe %1.javapause steht, womit die Abwahl des Dos-Box-Fensters eine Tasteneingabe verlangt.(.BAT File zum Kompilieren Download-Version JDK 1.0 :set HOME= d:\Jdk\javaset CLASS-PATH=;D:\Jdk\java\lib\classes.zipPATH C:\WINDOWS\COMMAND; D:\Jdk\java\bin javac.exe %1.java %2 %3 pause)JDK 1.0 bietet keinen WWW-Browser, sondern nur den „appletviewer“. Dieser eignet sich zum Debug, indem in einem .bat File gestartet, im zugehoerigen Dos-Box Fenster etwaige Meldungen zu Laufzeitfehlern oder Debug-Meldungen einsichtig sind. Fuer einen raschen Entwicklungszyklus Compilieren / Testen bietet sich an, das obige .bat File um die Zeile ( appletviewer.exe %1.html) zu erweitern. Natuerlich muß dann das .html File, in welchem die Referenz zu dem aufzurufenden Programm steht, den gleichen Namen wie das zu testende Programm haben. Als Editier-Tool dient mir ein alter Turbo-C Editor in einer Dos-Box. Da dieser Editor keine langen Dateinamen ablegt, enden bei mir die Sourcen .jav und nicht mit .java, wie dies der Compiler verlangt. Die Zeile (copy %1.jav %1.java) vor javac.exe im obigen .bat File stellt einen reibungslosen Ablauf sicher. Auch waehle ich nur Programmnamen mit 8 Zeichen. Nach den ersten Versuchen mit den DEMOS vertiefte ich mich in die formale Sprachbeschreibung. Zur Formalität von JAVA ist in Schlagzeilen immer zu hören, daß es keine Pointer wie in C gibt, meine Erkenntnis ist jedoch, daß es eigentlich nur Pointer gibt, eingebettet und kontrolliert in einer Garbage-Collection. So ist die Möglichkeit statischer Deklarationen eher dürftig. In der Werbung möchte man offensichtlich auf die Laufzeitfestigkeit hinweisen, im Gegensatz zu den katastrophalen Erfahrungen unter Windows 3.x, daß Programmfehler in einem einzigen Programm den Absturz des Gesamtsystems bewirken können. Leuten, welche gewohnt sind Pointer zu verwenden, ist zu sagen, daß alle Variablen sich so verhalten, als waeren sie mit Pointern und malloc deklariert worden. Arrays sind immer möglich. Bloß Strukturen und Unions wie in C oder C++ sind ausgespart und muessen bei Bedarf durch eine Variablen-Funktions-Deklaration (neue Klasse) ersetzt werden (DieTypenprüfung ist rigoros). JAVA kennt auch zur Laufzeit die Namen der Klassen, so kann man sich gewisse Aufrufe zur Laufzeit in seiner Textvariablen zusammeneditieren.‘is instance of’ - eine Abfrage zeigt, dass in der Garbage Collection der Instanzverlauf zur Laufzeit transparent ist.All dies verhindert keine Programmabstürze von nicht strategisch ausgetesteten Programmen:Eine Variable darf nur dann verwendet werden, nachdem sie eine Zuweisungerfahren hat (bloß deklarierte Variablen haben den Wert oder Inhalt ‘null’). Wenn nun Codeteile quasizeitlich ablaufen, bedarf es einiger Sorgfalt beim programmieren, damit die Reihenfolge von Zuweisung und Zugriff sichergestellt ist.Die Standardprogrammbibliothek ist umfangreich und erlaubt ein Studium nur Zug um Zug anhand von Programmbeispielen. Da JDK 1.0 noch keine komfortable integrierte Entwicklungsumgebung bietet, verwende ich den Netscape Browser, um die HTML Docs zu lesen und den Lister des „Windows Commander“ (ein zum Norton Commander äquivalentes Tool für WIN95) .Nach all dem lesen und sichten von DEMOS überlegte ich mir als Aufgabe, ein Programm welches in der ersten Stufe die Tastatur eines Eingabegeräts simulieren möge. Klickt man mit der Maus auf eine Taste, soll diese für eine gewisse Zeit hell gezeichnet werden.Für diese primitiv erscheinende Anforderung ergab sich bereits eine interessante Problematik:Nach einer Aktion = Maus-Click kann ich sofort die Taste hell erscheinen lassen, aber wodurch wird die Dunkelzeichnung angestoßen, ohne in eine dumme Endlosschleife oder sleep zu gehen, was den sonstigen Programmlauf aussetzen wuerde. Die Lösung war ein Thread. Ein kleiner Programmkörper wird im Zuge der Hellzeichnung angeworfen, in diesem ist ein kurzes sleep codiert und danach die Dunkelzeichnung selbiger Taste. Der Lauf des aufrufenden Programmteils wird dabei parallel fortgesetzt. Letztendlich ist es dann mein Ziel, ein bestimmtes Bediengerät softwaremäßig nachzubilden, für das ein solches JAVA Programm als lebende Bedienungsanleitung dient.Ich hoffe hiermit, Euch einen kleinen Einblick in das Konzept von JAVA gegeben zu haben und werde bei Interesse wieder berichten.
Für einen Gedankenaustausch Interessierte:

INHALT


erhard.glueck@ades.telecom.at