|
JAVA -- Stimulans für den Informatikunterrichtvon Rüdeger Baumann
In dem Zuge, wie Computer allenthalben Verwendung finden,insbesondere vernetzt sind, werden sie zum Bestandteil der Kultur. N. Nakedey
JAVA ist eine Programmiersprache, die es ermöglicht, das World Wide Web (kurz: Web) von einem statischen Informationsspeicher in eine lebhafte Anwendungswelt zu verwandeln. Neue Protokolle, neue Datentypen und die Möglichkeiten objektorientierter Programmierung machen JAVA zu einem Werkzeug kreativer Gestaltung. JAVA erlaubt nicht nur wie bisher Daten, sondern auch Programme aus dem Web zu laden, die lokal ausgeführt werden können. JAVA-Programme können auf unterschiedlichen Computersystemen ausgeführt werden, ohne daß sie speziell angepaßt werden müssen. Nach Einschätzung vieler Experten löst JAVA zusammen mit anderen Internet-Technologien die zweite informatische Revolution nach Einführung der Personal-Computer (PCs) aus. Wir befinden uns heute, u.a. auch angeregt durch die Initiative Schulen ans Netz, in einer neuen Pionierphase der Informatik in der Schule, an deren Ende der Informatikunterricht ein grundlegend verändertes Gesicht zeigen wird. In diesem Beitrag soll versucht werden, die Lehrkräfte auf diese Entwicklung aufmerksam zu machen und ihnen hinsichtlich der Internet-Programmierung erste fachlichliche Informationen zu vermitteln.
Die Idee der VernetzungDer Informatik liegen drei fundamentale Ideen zugrunde: die Idee der
Formalisierung, der Automatisierung und der Vernetzung (Baumann, 21996, Kapitel 5). Bisher
stützte sich der Informatikunterricht im wesentlichen auf die ersten beiden Ideen;
nunmehr ist die Zeit reif für die dritte.
Diese Sicht wird der Informatik in der Schule neue Impulse verleihen und ihre Etablierung als reguläres und gleichberechtigtes Unterrichtsfach weiter voranbringen. Nur die Informatik mit ihrem theoretischen Begriffsgerüst und den Methoden zur Bewältigung von Komplexität wird in der Lage sein, im Dschungel der Medien und Netze geistige Orientierung zu geben. Übrigens dürfte damit auch endgültig klargestellt sein, wie absurd Bemühungen sind, die Informatik in andere Unterrichtsfächer (z.B. die Mathematik) integrieren zu wollen und es zeigt sich, daß ein ausschließlich algorithmenorientierter Informatikunterricht zum Scheitern verurteilt ist. JAVA-EntstehungsgeschichteDie Entwicklung von JAVA begann ums Jahr 1990 bei der Firma Sun Microsystems in Mountain View (Kalifornien). Damals beschäftigte sich ein Team unter Leitung von James Gosling mit der Entwicklung einer neuen Programmiersprache für den Einsatz im Bereich der Steuerungstechnik. Man wollte eine Sprache schaffen, die klein, schnell und in jedem gebräuchlichen und zukünftigen elektronischen Steuergerät gleichermaßen einsetzbar sein sollte. Die systemspezifische Compilierung des Quelltextes sollte bei dem unter dem Codename Oak (Eiche) laufenden Projekt entfallen. Das Projekt Oak änderte jedoch nach kurzer Zeit seine Zielrichtung und
seinen Namen. Letzterer war schon anderweitig vergeben, und das Aufgabengebiet für die
neue Programmiersprache wurde durch die rasche Entwicklung in der Medienlandschaft um
weitere Punkte ergänzt. Das neue Einsatzgebiet war nun die Haushaltgeräte-Elektronik:
Man wollte Wege aufzeigen, wie Telefonen, Fernsehgeräten, Videorekordern und
Waschmaschinen Leben einzuhauchen sei. Im Vordergrund stand dabei die Benutzerführung,
d.h. die Interaktion des Benutzers mit dem Gerät. Auch einen griffigen Namen ließen die
Autoren sich einfallen: So stimulierend wie das braune Getränk im Stammcafé sollte ihr
Softwareprodukt sein. (In der amerikanischen Umgangssprache steht JAVA einfach
für Kaffee.) Nachdem sich jedoch dafür kein rechter Bedarf eingestellt hatte, suchte man (im Frühjahr 1994) eine neue Verwendung für das überflüssig gewordene Produkt und fand sie im Internet. JAVA bot die Chance, Programme für den Einsatz im Internet zu entwickeln, da JAVAs Portabilität die Möglichkeit bot, die Anwendungen ohne explizite Kompilierung auf jeder Hardware-Plattform und jedem Betriebssystem (Windows, UNIX, MacOS oder Solaris) laufen zu lassen. Im Mai 1995 stellte Sun eine erste Beta-Version des vollständig in JAVA entwickelten Browsers HotJAVA in San Francisco der Öffentlichkeit vor. Der Erfolg ließ nicht lange auf sich warten. Innerhalb kürzester Zeit erklärten verschiedene Softwareproduzenten ihre Unterstützung für JAVA. Der wichtigste Partner zu Beginn war wohl die Firma Netscape, die mit ihrem Navigator eine Vormachtstellung im Internet innehatte. Das inzwischen in Palo Alto (Kalifornien) arbeitende Entwicklungsteam legte in der Rekordzeit von weniger als einem Jahr (im Frühjahr 1996) eine erste Beta-Version des JAVADevelopersKit (JDK) vor: Dabei handelte es sich zwar nicht um eine grafische Entwicklungsoberfläche, sondern um einen kommandogesteuerten Compiler (und Interpreter). Mittlerweile sind Versionen für Windows95, Windows NT und viele andere Systeme verfügbar. JAVA ist ein Kind des Internet: Alles, was man zum Programmieren benötigt, steht im Netz zum Abholen bereit. Diskussionen, neue Programme, Konstruktionsfehler, Sicherheitslücken und deren Behebung werden ebenfalls über das Netz verbreitet. Weil es so einfach ist, an das Material zu gelangen, haben bereits sehr viele mit dem System gespielt. Wahrscheinlich ist die Software dadurch in wenigen Monaten intensiver getestet worden als andere Programmiersprachen in mehreren Jahren. Schließlich erfährt man aufgrund der im Internet üblichen Geschwätzigkeit Dinge, die sonst über den kleinen Kreis der Eingeweihten nicht hinausgedrungen wären. So bekennen die Autoren von JAVA freimütig, daß sie unter anderem auch die Absicht verfolgten, die Marktstrategie eines Quasi-Monopolisten wie Microsoft zu unterlaufen. Ironischerweise kann dies nur gelingen, wenn JAVA selbst eine monopolartige Stellung auf dem Softwaremarkt erlangt (Pöppe, 1996). EigenschaftenIm offiziellen Referenzwerk wird JAVA als universelle, Nebenläufigkeit ermöglichende, klassenbasierte, objektorientierte Programmiersprache gekennzeichnet, deren Entwurf so wenig Implementierungsabhängigkeit wie möglich enthält. JAVA erlaubt Anwendungsentwicklern, ein Programm einmal zu schreiben und es dann beliebig im Internet ablaufen zu lassen (Gosling u.a., 1997, Vorwort). PortierbarkeitUnter Portierbarkeit (oder: Portabilität, Plattformunabhängigkeit) versteht man die Eigenschaft einer Programmiersprache, ohne große Änderungen auf unterschiedlichen Rechenanlagen ausgeführt werden zu können. Zu diesem Zweck wurde bei der JAVA-Entwicklung auf ein bewährtes Prinzip zurückgegriffen, das beispielsweise bereits im UCSD-PASCAL (P-Code) verwendet worden war: Man definiert eine gedachte Maschine (hier: die sogenannte virtuelle JAVA-Maschine) und implementiert jeweils einen auf die Hardware-Plattformen zugeschnittenen Interpreter. Ein Quelltext wird zunächst vom JAVA-Compiler in die Sprache der virtuellen Maschine, den sogenannten Bytecode, übersetzt (und gegebenenfalls übers Netz versandt). Auf dem lokalen Rechner (mit seinem speziellen Betriebssystem und Prozessor) wird dann dieser Bytecode zur Laufzeit in die Maschinensprache des Prozessors umgesetzt und ausgeführt. Ein solcher Bytecode-Interpreter ist Bestandteil aller JAVA-fähigen Browser (wie z.B. HotJAVA von Sun, Navigator ab Version 2.0 von Netscape oder Internet-Explorer von Microsoft). Ein in JAVA programmiertes Applet (Internet-Programm, s. unten) ist damit auf allen gängigen 32-Bit-Plattformen und Betriebssystemen einsatzfähig. Typisierung und ObjektorientierungJAVA ist eine streng typisierte Sprache. Das heißt: jede Variable und jeder Ausdruck besitzt einen zur Übersetzungszeit bekannten Typ. Die Werte, die eine Variable oder ein Ausdruck annehmen kann, werden durch den jeweiligen Datentyp vorgeschrieben; er schränkt die Operationen auf diese Werte ein und bestimmt damit deren Bedeutung. Strenge Typisierung hilft bei der Aufdeckung von Fehlern zur Übersetzungszeit. Es gibt in JAVA zweierlei Typen: einfache Typen und Verweistypen. Die einfachen Typen sind numerische Typen (ganze Zahlen und Gleitkommazahlen), Zeichen und Wahrheitswerte. Die Verweistypen sind Klassentypen, Schnittstellentypen und Typen von Reihungen (arrays). Ein Objekt in JAVA ist ein dynamisch erzeugtes Exemplar eines Klassentyps oder eine dynamisch erzeugte Reihung. JAVA ist konzeptionell mit anderen Hochsprachen (wie z.B. EIFFEL, C++ oder OBERON) verwandt. Die JAVA-Klassen sind Bestandteil des o.a. JAVADevelopersKit (JDK), das zusätzlich über Klassen verfügt, die Vernetzungsfunktionen, Internet-Protokolle und Benutzeroberflächen unterstützen. NebenläufigkeitZwei Prozesse (Programmfäden, threads) heißen nebenläufig, wenn sie unabhängig voneinander parallel oder in einer beliebigen sequentiellen Reihenfolge bearbeitet werden können. Gerade in Netzen sollten viele Prozesse gleichzeitig laufen: Damit kann sich ein Prozeß um die Aktualisierung der Bildschirmausgabe kümmern, während ein anderer mit einem Server kommuniziert und wieder einer Datenstrukturen manipuliert. Dies setzt voraus, daß die bekannten Methoden zur Interprozeß-Kommunikation und Synchronisation implementiert sind. SicherheitEin per Internet übermitteltes Programm muß hohen Sicherheitsansprüchen genügen: Die Anwender müssen darauf vertrauen können, daß es weder ihre Daten ruiniert noch sie anderen preisgibt oder gar einen Virus in ihr Gerät einschleust. Gosling und Mitarbeiter modifizierten daher ihre Programmiersprache mit dem Ziel, das Schreiben schädlicher Programme unmöglich zu machen. Ihre Idee war, daß jede potentiell gefährliche Anwendung einem Syntaxfehler gleichkommen sollte. Somit könnte bereits eine formale Überprüfung auf syntaktische Korrektheit die Unschädlichkeit eines Programms erweisen. Dazu mußte das übliche Sortiment zulässiger Befehle auf eines aus garantiert harmlosen reduziert werden. EinfachheitDie JAVA-Syntax lehnt sich eng an die Programmiersprache C++ an. Das dort
nur als Möglichkeit enthaltene objektorientierte Programmieren ist allerdings
obligatorisch (siehe oben); einige Sprachelemente, die diesem Prinzip zuwiderlaufen und
ohnehin eine Quelle schwer zu findender Fehler bilden, wurden gestrichen. Die wichtigsten
davon sind: Typedefs, Defines und der Präprozessor; Strukturen und Unions; Funktionen
außerhalb von Klassen; multiple Vererbung; Goto-Anweisungen; automatische
Typumwandlungen; Zeiger und explizite Speicherverwaltung. Anstelle von
Speicherverwaltungsfunktionen bietet JAVA eine eingebaute Speicherbereinigung (garbage
collector), wie man sie z.B. von LISP her kennt. Der Programmierer braucht sich damit gar
nicht um die Speicherverwaltung zu kümmern und hat auch keine Möglichkeit dazu. Statt
seiner kümmert das System sich automatisch um die Anforderung und Freigabe von
Speicherplatz. HotJAVAWährend JAVA eine Programmiersprache und damit unabhängig von Anwendungen und auch vom Internet selbst ist, ist HotJAVA ein Web-Browser, der selbst in JAVA geschrieben ist und damit auch die Ausführung von JAVA-Applets (siehe unten) erlaubt. JAVAScriptUrsprünglich wurde JAVAScript von der Firma Netscape als Makrosprache (Erweiterung von HTML zur grafischen Aufwertung) für deren Browser entwickelt. Im Zuge der Kooperation mit Sun (siehe oben) wurde die Syntax an JAVA angelehnt. Der Sprachumfang ist geringer, aber immerhin handelt es sich um eine universelle Programmiersprache. Für zahlreiche Aufgaben, die eine Netzapplikation benötigt, ist nur wenig Rechenmacht bzw. Intelligenz erforderlich z.B. zur Überprüfung einer Eingabe auf Plausibilität. Derartige Eingabeprüfungen können mittels JAVAScript auf der Kundenseite der Verbindung direkt im Browser vorgenommen werden, d.h. sie brauchen nicht wie bisher bei den in HTML ausgeführten Formularen an den Anbieter (Server) geschickt zu werden: Erst wenn der Eingabesatz komplett ist, werden die Daten an den Server verschickt. Damit werden Server und Netz entlastet. Ein JAVAScript-Programm wird nicht kompiliert, sondern direkt als ASCII-Text in das HTML-Dokument eingefügt. Jeder, der diese Datei abruft, hat den Quelltext zur Verfügung und kann ihn lesen. Aus didaktischer Sicht ist dies natürlich ein Vorteil. Es gibt Hinweise darauf, daß sich JAVAScript als Ergänzung bzw. Erweiterung der Einführung in die Textverarbeitung bereits im Rahmen der Informationstechnischen Grundbildung (SekundarstufeI) eignen könnte. SystemanforderungenDie folgenden Beispiele wurden mit der Entwicklungsumgebung VisualJ++ von Microsoft erstellt, die den Schulen im Netz kostenfrei zur Verfügung steht (sonst 79,- DM, z.B. mit dem Buch von Davis). Ebenso gut geeignet sind etwa die Werkzeuge SymantecCafé oder JAVAWorkshop (siehe Piemont, 1996). Der Betrieb von VisualJ++ (Version 1.1) setzt folgendes voraus: PC mit 486er, besser Pentium-Prozessor, mindestens 8 Mbyte Hauptspeicher (empfohlen: 12 Mbyte), Betriebssystem Windows95 oder NT4.0. Auf der Festplatte werden für die typische Installation 43 Mbyte benötigt. Dem Buch von Dobereit (1996) ist eine CD-ROM mit etwas bescheideneren, für die Schule jedoch ausreichenden, Werkzeugen beigelegt. Da JAVA als normale Programmiersprache verwendet werden kann, ist ein Internet-Anschluß zunächst nicht nötig. In der Schule kann daher die Frage der Netzanbindung hiervon unabhängig behandelt werden. Erste SchritteMit JAVA lassen sich zwei unterschiedliche Programmtypen erstellen: Anwendungen und Applets. Eine Anwendung (engl.: application) ist ein eigenständiges Programm, das in der Sprache JAVA geschrieben ist und vom JAVA-Compiler bzw. Interpreter übersetzt und ausgeführt wird. Ein Applet (Diminutiv von Application) dagegen ist stets in eine HTML-Seite eingebettet und kann daher nur von einem JAVA-fähigen Browser ausgeführt werden. Der vorliegende Beitrag befaßt sich zunächst mit eigenständigen JAVA-Anwendungen, da sie syntaktisch und in der Handhabung einfacher sind. Wir scheuen uns nicht, die Erkundung von JAVA mit einem trivialen Wegwerf-Programm zu beginnen; trotz seiner armseligen Funktionalität verlangt es einen erheblichen Erklärungs- und Bedienungsaufwand. Im Lauf der didaktischen Entwicklung werden sich später bessere Einstiegsbeispiele bzw. Projekte (vgl. Hermes, 1996) ergeben aber soweit sind wir derzeit noch nicht.
Mit dem Texteditor wird folgender Programmtext erzeugt:
Der Text wird zunächst unter dem Dateinamen Zaehler1.java abgespeichert. Es ist wichtig, daß der Name der Datei mit dem Namen der Klasse übereinstimmt und daß die Erweiterung java lautet. Nachdem das Programm kompiliert und das Kommando Execute aktiviert wurde, erscheinen die Zahlen auf dem Bildschirm. Eine vorläufige Erläuterung, die nicht auf zu viele jetzt noch nicht verständliche Einzelheiten eingeht, könnte wie folgt lauten: Im Programm wird eine Klasse mit dem Namen Zaehler1 vereinbart. So wie in PASCAL zu Beginn eines Programms das Schlüsselwort PROGRAM steht, heißt es hier eben class. Da JAVA mit dem Unicode-Zeichensatz (siehe Witten, 1996) arbeitet, dürfen in Bezeichnern sogar Umlaute und nationale Sonderzeichen verwendet werden. Die Klasse Zaehler1 enthält eine einzige Operation namens main (das Hauptprogramm). Sie liefert keinen Ergebniswert und wird daher als void (d.h. leer) gekennzeichnet; sie ist klassenbezogen (static) und öffentlich (public), d.h. es kann von überall her auf sie zugegriffen werden. Der einzige Parameter von main ist eine Reihung (array, erkennbar an den eckigen Klammern []), die aus Zeichenketten (string) besteht und den Namen args (d.h. Argumente) trägt. Es handelt sich um sogenannte Programmargumente, welche beim Programmaufruf vom Benutzer an das Programm übergeben werden können. Der zwischen geschweiften Klammern {} stehende Anweisungsteil der Operation main besteht einfach darin, eine Zeichenkette mit anschließendem Zeilenvorschub auf dem Bildschirm auszugeben (println). Es folgt in leicht verständlicher Syntax eine Zählschleife. Die geschweiften Klammern können sich PASCAL-Programmierer als BEGIN und END vorstellen; sie begrenzen den jeweiligen Klassen- oder Methodenrumpf. Auf diese Weise kann allerdings noch nicht einmal der einfachste Dialog programmiert werden. Was sich in BASIC in vier und in PASCAL in acht Programmzeilen erledigen läßt, erfordert hier einen gewaltigen programmtechnischen Aufwand (siehe unten). AblaufsteuerungDie Sprachelemente zur Ablaufsteuerung (Sequenz, Verzweigung, Schleife) ähneln denen prozeduraler Programmiersprachen
Der Programmtext lautet:
An diesem Beispiel wird unter anderem deutlich, daß für die prozedurale Programmierung immer der gleiche Programmrahmen verwendet werden kann, der bei Akzeptanz der o.a. Konventionen ohne die Begrifflichkeit der objektorientierten Programmierung auskommt. Objektorientierte ProgrammierungIn einem vernünftig konzipierten Informatikunterricht wird möglichst früh in objektorientiertes Denken und Modellieren eingeführt. So kann bereits im Anfangsunterricht etwa innerhalb eines Kurses Informationssysteme und Datenbanken (vgl. Baumann, 1996, 349 ff) folgende Terminologie eingeführt werden (siehe Goos, 1996, 146ff.):
Greift man nun zu den im Buchhandel angebotenen JAVA-Einführungen (oder z.B. zu Publikationen über C++), so stellt sich rasch der Eindruck begrifflicher Unklarheit und Verwirrung ein. Dazu einige Beispiele:
Auf keinem Gebiet herrschen so unklare Vorstellungen und wird soviel Unsinn produziert wie auf dem der objektorientierten Programmierung. LOG-IN-Leser finden bei Eirund (1993) eine vergleichsweise klare Darstellung, während der Aufsatz von Hermes (1996) zur Begrifflichkeit leider nichts beiträgt. Eine klare und konsequente Sprechweise ist aber unabdingbare Voraussetzung zum Verstehen dieses nicht einfachen Themas. Jedes JAVA-Programm ist aus Klassen aufgebaut. Aus einer Klassenvereinbarung lassen sich beliebige Objekte (Exemplare dieser Klasse) erzeugen. Eine Klasse enthält zweierlei Komponenten, nämlich Attribute und Methoden. Ein Attribut (Datenfeld) beschreibt die entweder zur Klasse selbst oder zu den Objekten der Klasse gehörenden Daten. Sein aktueller Wert (Attributwert) kennzeichnet den aktuellen Zustand des Objekts bzw. der Klasse. Methoden dagegen sind die Anweisungen, die auf den Datenfeldern operieren, um den jeweiligen Zustand mitzuteilen oder zu modifizieren. Kurz: Attribute beschreiben die Eigenschaften bzw. den Zustand eines Objekt, die Methoden sein Verhalten. Ein wichtiges Prinzip der objektorientierten Programmierung, nämlich die Fähigkeit der Objekte, ihren Zustand selbst zu verwalten, wird durch Datenkapselung unterstützt, die dafür sorgt, daß auf die Attributwerte eines Objekts von außen (lesend oder schreibend) nicht zugegriffen werden kann. Es gibt nun drei Zugriffsmöglichkeiten auf die Klassen oder deren Komponenten.
Eine Klassenvereinbarung besteht aus dem Kopf und dem Rumpf der Klasse. Ersterer wird vom Schlüsselwort class eingeleitet; es folgt der Name der Klasse (hier: Punkt). Der Klassenkopf kann sogenannte Klassenmodifikatoren (public, abstract oder final) enthalten. In geschweiften Klammern folgt der Klassenrumpf (engl.: class body), der aus der Vereinbarung von Attributen und Methoden besteht. Im obigen Beispiel gibt es drei Attribute x, y und farbe vom Typ int (Ganzzahl) sowie zwei Methoden moveTo und MoveRel. Als public deklarierte Attribute werden von deren Unterklassen außerhalb des Paketes (Klassenbibliothek), in dem die betreffende Klasse vereinbart ist, ererbt. Als private deklarierte Attribute dagegen werden nicht von deren Unterklassen ererbt. Eine Methodenvereinbarung besteht aus Kopf (Signatur) und Rumpf. Ersterer
enthält den Namen der Methode (hier: moveRel). Davor steht der Ergebnistyp; liefert die
Methode kein Ergebnis, ist er void (d.h. leer). Hinter dem Namen folgt (zwischen runden
Klammern) die Parameterliste; ggf. die leere Parameterliste (). Der Kopf einer Methode
kann zusätzlich Methodenmodifikatoren enthalten, und zwar einen der Zugriffsregler
(public, protected oder private) sowie abstract und static. Abschließende BemerkungenFraglos müssen wir uns der objektorientierten Programmierung im Unterricht widmen, auch wenn die Curricula dieser Entwicklung bisher kaum Rechnung tragen. Auf uns selbst angewiesen, bleibt wohl nichts anderes übrig, als die aktuelle Literatur zu sichten und eine Linie, einen roten Faden, in das Thema zu bringen (Hermes, 1996, S.29). Dies gilt natürlich nicht nur für die objektorientierte Programmierung. Es konnte hier nur ein allererster und höchst unvollkommener Einblick geboten werden. Folgendes dürfte jedoch vielleicht klargeworden sein:
In vorstehendem Beitrag sollten die Informatik Lehrenden dazu angeregt werden, sich mit den genannten neuen Ideen auseinanderzusetzen und deren didaktisches Potential zu erkunden. Selbst wenn JAVA sich in dieser Form nicht durchsetzen sollte, werden die grundlegende Ideen, auf der das Sprachkonzept von JAVA beruht, Bestand haben. Sie wird die Informatik in der Schule gewaltig stimulieren und eine neue Phase des Informatikunterrichts einleiten. Streifzüge durchs Schulnetz zeigen, daß etliche Lehrer schon über Kenntnisse dieser neuen Werkzeuge verfügen. Sie seien aufgefordert, ihre Erfahrungen mitzuteilen, um eine Diskussion um deren didaktischen Möglichkeiten in Gang zu setzen. Zur Einführung scheint das Buch von Dobereit (1996) gut geeignet; brauchbar ist auch Davis (1996); das Buch enthält eine CD-Rom mit VisualJ++ und dem InternetExplorer von Microsoft. Das m.E. mit Abstand beste JAVA-Lehrbuch stammt von N. Hendrich (1997). Rüdeger BaumannGymnasium ErnestinumBurgstraße 2129221 Celle LinksDas folgende Forum wird von den JAVA-Erfindern betrieben und enthält jede Menge allgemeine Informationen zu JAVA (JDK, HotJAVA, JAVA Workshop und die zugehörigen Dokumentation direkt von Sun): Gamelan ist die Sammelstelle für Informationen zu JAVA. Die Betreiber warten eine Liste von Verweisen zu anderen JAVA-Web-Sites und liefern eine Übersicht über die wichtigsten JAVA-Ressourcen im Netz: Dieses Forum wird von den Entwicklern von Visual J++ betreut und ist die beste Quelle für Informationen zu Visual J++: http://www.microsoft.com/visualj/ Literatur
|