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. |