Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 5
Java ist auch eine Insel

Java ist auch eine Insel
5., akt. und erw. Auflage
1454 S., mit CD, 49,90 Euro
Galileo Computing
ISBN 3-89842-747-1
gp Vorwort
  gp Vorwort zur 4. Auflage
  gp Vorwort zur 5. Auflage

Vorwort

Mancher glaubt schon darum höflich zu sein, weil er sich überhaupt noch der Worte und nicht der Fäuste bedient. – Hebbel

Java ist auch eine Insel

Java wurde am 23. Mai 1995 auf der SunWorld in San Francisco als neue Programmiersprache vorgestellt. Sie stellt uns elegante Programmiermöglichkeiten zur Verfügung; nichts Neues, aber so gut verpackt und verkauft, dass sie angenehm und flüssig zu programmieren ist. Dieses Tutorial beschäftigt sich in 26 Kapiteln mit Java, den Klassen, der Design-Philosophie und der Programmierung.

Motivation für das Buch – oder warum es schon wieder ein Java-Buch gibt ...

Die Beschäftigung mit Java hängt eng mit einer universitären Pflichtveranstaltung zusammen – meiner Projektgruppe zur objektorientierten Dialogspezifikation um das Jahr 1997. Da ich die Teilnehmer davon überzeugen wollte, Java als Programmiersprache einzusetzen (und nicht Objective-C oder C(++)), arbeitete ich meinen ersten Foliensatz für den Seminarvortrag aus. Dieser wurde auch die Basis für meine Schulungsunterlagen, die ich in nahezu hundert Kursen immer weiter verbessert habe. Als ich dann noch die Seminararbeit schreiben musste, wurde aus den geplanten Seminarseiten schon ein kleines Buch. Es kam sogar dazu, dass die so genannte Seminararbeit schon sehr viele Seiten fasste und nachher die jetzige Einleitung mehr oder weniger zur Seminararbeit verwurstet wurde; zumal das Tutorial zwischendurch immer dicker geworden ist.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Dass es mich über die universitäre Pflicht hinaus zum Schreiben treibt, ist nur eine Lernstrategie. Wenn ich mich in neue Gebiete einarbeite, lese ich erst einmal quantitativ auf Masse und beginne dann, Zusammenfassungen zu schreiben. Erst beim Schreiben wird mir richtig bewusst, was ich noch nicht weiß. Das Lernen durch Schreiben hat mir auch bei einem anderen Buch sehr geholfen, das leider nicht veröffentlicht wurde. Es ist ein Assembler-Buch für den MC680x0 im Amiga. Doch die Verlage konnten mir nur sagen, dass die Zeit des Amiga vorbei sei. Die Prognosen für Java stehen schon besser, denn der Einsatz von Java ist mittlerweile so gefestigt wie COBOL bei Banken und Versicherungen.

Und für wen ist das Tutorial?

Die Kapitel sind für Anfänger der Programmiersprache Java wie auch für Fortgeschrittene konzipiert. Kenntnisse in einer strukturierten Programmiersprache wie C, Delphi, Visual Basic und ein Verständnis für objektorientierte Technologien sind hilfreich, da das Buch nicht besonders auf Rechnerarchitektur eingeht, oder die Frage, was Programmieren ist. Wer also schon in einer beliebigen Sprache programmiert hat, ist mit diesem Buch genau richtig!

Einige Unterkapitel sind für erfahrene Programmierer oder Informatiker. Besonders der Neuling wird an einigen Stellen den sequenziellen Pfad verlassen müssen, da spezielle Kapitel mehr Hintergrundinformationen und Vertrautheit mit Programmiersprachen erfordern. Verweise auf C(++) oder C# dienen aber nicht wesentlich dem Verständnis, sondern nur dem Vergleich.

Was das Tutorial nicht ist

Dieses Buch darf auch nicht als Programmierbuch für Einsteiger verstanden werden. Wer noch nie programmiert hat und mit dem Wort »Übersetzen« in erster Linie Dolmetschen verbindet, sollte besser ein anderes Tutorial bevorzugen oder parallel lesen. Viele Bereiche aus dem Leben eines Industrieprogrammierers behandelt die Insel bis zu einer allgemein verständlichen Tiefe, doch das Buch ersetzt nicht die »Java Language Specification« (JLS) (http://java.sun.com/docs/books/jls/).

Die Java-Technologien sind in den letzten Jahren explodiert, sodass eine anfängliche Überschaubarkeit einer starken Spezialisierung gewichen ist. Heute ist es kaum mehr möglich, alles in einem Buch zu behandeln, und das möchte die Insel auch auf keinen Fall. Ein Buch, das sich speziell mit der grafischen Oberfläche Swing beschäftigt, ist genauso umfangreich wie die jetzige Insel. Nicht anders verhält es sich mit den anderen Spezialthemen wie Objektorientierte Analyse/Design, UML, Verteilte Programmierung, Enterprise JavaBeans, Datenbankanbindung, Web-Dienste, dynamische Web-Seiten und viele andere Themen. Hier muss ein Spezialbuch die Wissensneugier befriedigen.

Welche Software wir benutzen

Als Grundlage dient die Java Platform Standard Edition (Java SE). Diese lässt sich über http://java.sun.com/ beziehen. Das Paket besteht im Wesentlichen aus einem Compiler und einer Laufzeitumgebung (Interpreter). Das SDK ist für die Plattformen Windows, Linux und Solaris erhältlich. (Für Mac OS X gibt es die Java-Laufzeitumgebung unter http://www.apple.com/macosx/features/java/.) Bei Microsoft ist ebenfalls eine veraltete Laufzeitumgebung (Microsoft VM) zu erhältlich.

Eine grafische Entwicklungsoberfläche (IDE) ist nicht Teil der Java SE. Zwar verlasse ich mich ungern auf einen Hersteller, weil die Hersteller unterschiedliche Entwicklergruppen ansprechen, doch soll in diesem Buch die freie Entwicklungsumgebung Eclipse (http://www.eclipse.org/) von IBM Verwendung finden. Die Programme lassen sich aber grundsätzlich auch mit einem einfachen ASCII-Texteditor wie Notepad und vi eingeben und auf der Kommandozeile übersetzen. Diese Form der Entwicklung ist allerdings nicht mehr zeitgemäß, sodass ein grafischer Kommandozeilen-Aufsatz die Programmerstellung vereinfacht. Für die Entwicklung von Applets ist ein Browser mit Java-Unterstützung wichtig. Zum Testen lässt sich der AppletViewer aus dem JDK verwenden, aber während der Installation erlaubt sich die Sun Laufzeitumgebung, die Applets auszuführen.

Welche Version?

Als ich 1997 mit Java begann, kamen die ersten Java-Versionen vom Schöpfer Sun auf den Markt. Seither hat sich die Versionsspirale von 1.0 bis 5.0 (gleichbedeutend mit Versionsnummer 1.5) gedreht. Besonders für Java-Buch-Autoren stellt sich die Frage, auf welcher Java-Version ein Buch aufbauen muss und insofern, welche Bibliotheken beschrieben werden sollen. Ich habe das Problem so gelöst, dass ich immer die Möglichkeiten der neuesten Version beschreibe, was zur Drucklegung die Java SE 5 ist. Dies wirft an einigen Stellen Probleme auf, beispielsweise dann, wenn eine kommerzielle Entwicklungsumgebung genutzt werden soll oder Applets entwickelt werden. Kommerzielle IDEs hinken oft der Java-Umgebung von Sun etwas hinterher, und die Web-Browser, die Applets darstellen, verstehen nicht immer die aktuellen Versionen. Die beliebte Entwicklungsumgebung Eclipse 3.0 versteht leider Java 5 nicht, und hier fangen die Nachteile leider schon an. Dennoch ist es für mich eine Frage der Zeit, bis sich auch die Neuerungen durchsetzen, und so ist es schwer zu entscheiden, was denn nun alt ist oder nicht. Galt vor ein paar Jahren noch 1.2 als Novum, ist dies heute 1.4, und Java 5 wird sich längerfristig durchsetzen. Die Leser finden im Buch nur das, was aktuell möglich ist, und nur aus historischen Gründen Verweise auf frühere Lösungen. Für die Didaktik ist die Versionsfrage auch unerheblich, und Softwareentwickler werden die Online-Dokumentationen konsultieren.

Online-Informationen und Aufgaben

Das Buch ist in der aktuellen Version im Internet unter der Adresse

https://www.galileo-press.de/

erhältlich. Auf der Web-Seite erfährt der Leser Neuigkeiten und Änderungen.

Der Quellcode der Beispielprogramme ist in fast allen Fällen im Buch abgebildet. Ein komprimiertes Zip-Archiv mit allen Beispielen in elektronischer Form ist zusätzlich auf der Web-Seite erhältlich. Alle Programmteile sind frei von Rechten und können ungefragt in eigene Programme übernommen werden.

Wer eine Programmiersprache erlernen möchte, der muss sie wie eine Fremdsprache sprechen. Begleitend gibt es eine Aufgabensammlung auf der CD und viele Musterlösungen auf der Web-Seite

http://java-tutor.com/aufgaben/j/

Die Seite wird in regelmäßigen Abständen aktualisiert, sodass sich dort immer wieder neue Aufgaben und Lösungen vorfinden.

Unternehmen, die professionelle Java-Schulungen wünschen, um effektiv ihre Mitarbeiter weiterzubilden, sollten einen Blick auf http://www.java-tutor.com/seminare/ werfen. Unter anderem finden sich dort die Themen Java Einführung, Java Fortgeschrittene, XML, JSP/Servlets, JDBC, Swing/JDBC, Java-Optimierung, Entwicklung mit Eclipse, Java ME, Java EE und EJB.

Organisation der Kapitel

Das Kapitel 1, Schon wieder eine neue Sprache?, zeigt die Besonderheiten der Sprache Java auf. Einige Vergleiche zu anderen populären objektorientierten Sprachen werden gezogen. Die Absätze sind weniger technisch und zeigen auch den historischen Ablauf. Das Kapitel ist nicht didaktisch aufgebaut, sodass einige Begriffe erst in den weiteren Kapiteln vertieft werden; Einsteiger sollten es quer lesen. Ebenso wird hier dargestellt, wie das Java 2 SDK von Sun zu beziehen und zu installieren ist, damit die ersten Programme übersetzt und gestartet werden können.

Richtig los geht es in Kapitel 2, Sprachbeschreibung. Dort werden Variablen, Typen und die imperativen Sprachelemente hervorgehoben. Dabei werden die Grundlagen für jedes Programm mit Anweisungen und Ausdrücken geschaffen. Hier finden auch Fallanweisungen und Schleifen ihren Platz. Das alles geht noch ohne Objektorientierung.

Objektorientiert wird es in Kapitel 3, Klassen und Objekte. Dabei kümmern wir uns erst einmal um die in der Standardbibliothek vorhandenen Klassen. Eigene Klassen werden später entworfen. Die Bibliothek ist so reichhaltig, dass allein mit den vordefinierten Klassen schon viele Programme entworfen werden können. Speziell die bereitgestellten Datenstrukturen lassen sich vielfältig einsetzen.

Wichtig ist für viele Probleme auch Der Umgang mit Zeichenketten, der in Kapitel 4 vorgestellt wird. Die beiden notwendigen Klassen String und StringBuffer/StringBuilder werden eingeführt, und auch ein Abschnitt über reguläre Ausdrücke fehlt nicht. Bei den Zeichenketten müssen Teile ausgeschnitten, erkannt und konvertiert werden. Ein StringTokenizer zerlegt Zeichenfolgen aufgrund von Trennern in Teilzeichenketten. Mit Format-Objekten können beliebige Ausgaben in ein gewünschtes Format gebracht werden. Dazu gehört auch die Ausgabe von Dezimalzahlen.

Ein weiteres Feld, dem sich ohne eigene Klasse genähert werden kann, ist Mathematisches in Kapitel 5. Dazu wird die Klasse Math vorgestellt. Sie stellt typische mathematische Funktionen bereit, um etwa trigonometrische Berechnungen durchzuführen. Mit einer weiteren Klasse können Zufallszahlen erzeugt werden. Auch behandelt das Kapitel den Umgang mit beliebig langen Ganz- oder Fließkommazahlen.

Mit diesem Vorwissen über Objekterzeugung und Referenzen kann der nächste Schritt gemacht werden. In Kapitel 6 werden wir dann Eigene Klassen schreiben. Anhand von Diskotheken, Gebäuden und Kirchen modellieren wir Objekteigenschaften und zeigen Benutzt- und Vererbungsbeziehungen auf. Wichtige Konzepte wie statische Eigenschaften, Polymorphie, abstrakte Klassen und Schnittstellen (Interfaces) sowie Sichtbarkeit finden dort ihren Platz. Da Klassen in Java auch innerhalb von anderen Klassen liegen können (innere Klassen), wird sich ein eigenes Kapitel damit auseinander setzen.

Danach sind die Grundmauern gelegt, und die verbleibenden Kapitel dienen dem Ausbau des bereits erworbenen Wissens. Dieses wird in Kapitel 7, Exceptions, weiter vertieft. Ausnahmen bilden ein wichtiges Rückgrat in Programmen, da sich Fehler kaum vermeiden lassen. Da ist es besser, die Behandlung aktiv zu unterstützen und den Programmierer zu zwingen, sich um Fehler zu kümmern und diese zu behandeln. Es wird gezeigt, wie sich eigene Ausnahmen programmieren lassen.

Zu der 3270 Klassen und Schnittstellen umfassenden Klassenbibliothek gibt Kapitel 8, Die Funktionsbibliothek, eine Übersicht und führt in wichtige Klassen ein, etwa zur Konfiguration von Anwendungen, zum Konvertieren von Datentypen oder zum Ausführen externer Programme.

Kapitel 9 beschäftigt sich mit Threads und nebenläufiger Programmierung. Dabei umfasst das Kapitel auch die Koordination mehrerer kooperierender oder konkurrierender Threads.

Der Rest des Buches vertieft ausgewählte Bereiche. Hier kann der Leser den sequenziellen Pfad verlassen und sich einzelnen Themen widmen. Das beginnt in Kapitel 10 mit Raum und Zeit. Zeitzonen und unterschiedliche Ausgabeformate für Datumswerte werden eingeführt. Darunter fallen auch Datumsberechnungen auf der Grundlage des Gregorianischen Kalenders.

Kapitel 11 beschäftigt sich mit den Datenstrukturen und Algorithmen, die die Standardbibliothek anbietet. Die wichtigsten Klassen wie Vektoren, Stapel, Bitmengen und Assoziativspeicher werden vorgestellt und dann unterschiedliche Aufgaben mit den jeweils passenden Datenstrukturen gelöst. Als Algorithmen kommen etwa vorgefertigte Sortierverfahren zum Einsatz.

In Kapitel 12, Datenströme und Dateien, wird der Fokus auf die Ein-/Ausgabe gelenkt. Zuerst wird gezeigt, wie sich Attribute von Dateien und Verzeichnissen auslesen lassen, und dann, wie sich auf eine Datei wahlfreier Zugriff realisieren lässt. Anschließend folgt der zweite Teil über Datenströme, ein wichtiges Konzept, das auch bei Datenströmen aus Netzwerken, Datenbanken oder Schnittstellen wichtig ist. Die Datenströme können dabei durch Filter geschickt werden. Davon werden einige vorgestellt, die sich zum Beispiel die Zeilennummer merken, einen Datenstrom puffern oder ihn komprimieren. Eine elegante Möglichkeit ist das Serialisieren von Objekten. Dabei wird der Zustand eines Objektes ausgelesen und so in einen Datenstrom geschrieben, dass das Objekt später wiederhergestellt werden kann. Eine eigene Speicherroutine kann so entfallen.

Ein neues Thema spannt Kapitel 13 mit Die eXtensible Markup Language (XML) auf. Java als plattformunabhängige Programmiersprache und XML als dokumentenunabhängige Beschreibungssprache sind ein ideales Paar, und die Kombination dieser beiden Technologien ist der Renner der letzten Jahre.

Kapitel 14 beschäftigt sich mit der Grafikprogrammierung mit dem AWT. Das AWT (Abstract Window Toolkit) ist die Java-Möglichkeit, grafische Oberflächen zu gestalten. Dabei gliedert es sich in zwei große Teile: zum einen die direkte Ausgabe von Grafik-Primitiven wie Linien und zum anderen Komponenten für grafische Oberflächen. Das Kapitel behandelt die Themen Fenster, Zeichenketten und Zeichensätze, Farben, Bilder.

Das anschließende Kapitel 15 deckt die zweite Aufgabe der grafischen Oberflächen ab: Komponenten, Container und Ereignisse. Bei den Swing-Komponenten werden Oberflächen-Interaktionskomponenten vorgestellt sowie die Behandlung von Ereignissen, die aus Benutzeraktionen resultieren.

In Kapitel 16 geht es mit Netzwerkprogrammierung weiter. Wir sehen, wie Daten von Web-Servern bezogen werden können, und wie eine eigene Client-Server-Kommunikation aufgebaut wird. Bei Web-Servern werden wir CGI-Programme ansprechen, um an gewünschte Inhalte zu kommen. Neben der gesicherten Verbindung TCP gehen wir auch auf ungesicherte UDP-Verbindungen ein.

Mit dem Kapitel 17, Servlets und Java Server Pages, geht es dann in die Welt der dynamischen Web-Seiten. Java ist zur Zeit auf der Server-Seite sehr populär, und dort besonders beim so genannten Enterprise-Computing. Mit Java Server Pages ist es besonders einfach, dynamische Web-Inhalte zu formulieren, da auf die mitgeschickten Informationen vom Client sehr einfach zugegriffen werden kann. JSPs verfügen zudem über die gesamten Java-Möglichkeiten, insbesondere die Datenbankanbindung.

In Kapitel 18 zeigen wir auf, wie ein Java-Programm einfach Objekte und Methoden nutzen kann, die auf einem anderen Rechner gespeichert beziehungsweise ausgeführt werden. Solche Programme nutzen die Verteilte Programmierung mit RMI. Dabei wird der Aufruf einer Methode über das Netzwerk übertragen, und für das aufrufende Programm sieht es so aus, als ob es sich um einen normalen Funktionsaufruf für ein lokales Objekt handelt.

Das Wissen über die grafischen Oberflächen und Netzwerke wird in Kapitel 19 über Applets verbunden. Das sind Java-Programme, die innerhalb eines Web-Browsers leben. Die Bedeutung von Applets nimmt außerhalb von Firmennetzen (Intranets) immer mehr ab, sodass das Kapitel nicht umfangreich sein muss.

Das Thema Datenbankmanagement mit JDBC ist Inhalt von Kapitel 20. An einem Beispiel wird gezeigt, wie sich eine Verbindung zu einer Datenbank aufbauen lässt, um dort SQL-Anweisungen abzusetzen, die im nächsten Schritt abgeholt werden. Als Beispieldatenbank wird MySQL vorgestellt sowie die unbeliebte JDBC-ODBC-Brücke, mit der sich Java-Programme mit jeder ODBC-Datenbank verbinden lassen.

Mit Kapitel 21 widmen wir uns einer Java-typischen Technik: Reflection und Annotationen. Java-Klassen liegen selbst wieder als Meta-Objekte, als Exemplare der speziellen Klasse Class vor. Diese Class-Objekte geben Auskunft über die verfügbaren und definierten Variablen, Methoden und Konstruktoren. So lassen sich beispielsweise dynamisch bestimmte Methoden aufrufen oder die Werte von dynamisch ausgewählten Objektvariablen abfragen.

Die wiederverwendbaren Softwarebausteine in Kapitel 22, Komponenten durch Bohnen, heißen JavaBeans. Das sind Komponenten, die vor ihrer Benutzung durch ein spezielles Programm visuell editiert und verknüpft werden. Die Beans definieren Eigenschaften (Properties), die über Methodenaufrufe abgefragt und eingestellt werden.

Dass sich Java-Programme über JMX überwachen lassen, zeigt Kapitel 23. MBeans werden an einem MBeans-Server angemeldet und das Dienstprogramm jconsole ermöglicht den Zugriff und die Steuerung.

In Java kann nicht alles plattformunabhängig gelöst werden. An einer bestimmen Stelle muss plattformabhängiger Programmcode eingebaut werden. Sun definiert dazu das Java Native Interface (JNI), um auf Nicht-Java-Code wie C(++) zuzugreifen. Wir werden es in Kapitel 24, Java Native Interface, vorstellen.

Kapitel 25 zeigt kurz Sicherheitskonzepte, etwa das Sandkasten-Prinzip, und Sicherheitsmanager auf, aber auch, wie von Daten eine Prüfsumme gebildet werden kann und Daten mit DES oder RSA verschlüsselt werden.

In Kapitel 26, Dienstprogramme für die Java-Umgebung, geht es um die zum SDK gehörigen Programme und einige Extratools, die für Ihre Arbeit nützlich sind. Beschrieben werden Compiler, Interpreter und die Handhabung von Jar-Archiven. Dieses Archivformat ist vergleichbar mit den bekannten Zip-Archiven und fasst mehrere Dateien zusammen. Mit den eingebetteten Dokumentationskommentaren in Java kann aus einer Quellcodedatei ganz einfach eine komplette HTML-Dokumentation der Klassen, Schnittstellen, Vererbungsbeziehungen und Eigenschaften inklusive Verlinkung erstellt werden. Unter den Programmen, die zu keiner Standardinstallation gehören, sind etwa Tools, die Java-Programme in C-Programme übersetzen, sie verschönern und Bytecode wieder in lesbaren Java-Quellcode umwandeln.

Im Anhang findet sich das Quellenverzeichnis mit Verweisen auf interessante Bücher und Internet-Adressen.

Das Buch in der Lehre einsetzen

Die Insel eignet sich ideal zum Selbststudium. Das erste Kapitel dient zum Warmwerden und plaudert ein wenig über dies und das. Wer auf dem Rechner noch keine Entwicklungsumgebung installiert hat, sollte zuerst das SDK von Sun installieren. Es ist auf der CD oder unter http://java.sun.com/j2se/ abgelegt.

Zum Entwickeln von Software ist die Hilfe unerlässlich. Da sie einige Megabytes groß ist, muss sie extra ausgepackt werden. Sie ist auf der CD oder unter http://java.sun.com/docs/ erhältlich. Die API-Dokumentation ist ein einfaches Zip-Archiv mit einer Sammlung von HTML-Dateien, das im Java-Verzeichnis ausgepackt werden kann. Unter http://java.sun. com/docs/windows_format.html findet sich die Hilfe auch im HTMLHelp- und WinHelp-Format. Das macht die Suche in der Dokumentation einfacher.

Da das Sun SDK nur Kommandozeilentools installiert, sollte eine grafische IDE (Integrated Development Environment) installiert werden, da dies die Entwicklung von Java-Programmen deutlich komfortabler macht. Eine IDE bietet gegenüber der rohen Kommandozeile einige Vorteile:

gp  Der Prozess des Editierens, Compilierens, Laufenlassens soll schnell und einfach über einen Tastendruck oder Mausklick angestoßen werden.
gp  Die Syntax von Java sollte farblich hervorgehoben werden (Syntax Highlighting).
gp  Eine kontextsensitive Hilfe zeigt bei Methoden die Parameter an, gleichzeitig verweist sie auf die API-Dokumentation.

Weitere Vorteile wie GUI-Builder, Projektmanagement und Debuggen sollen jetzt keine Rolle spielen. Wer neu in die Programmiersprache Java einsteigt, wird mit Eclipse seine Freude haben. Es wird im ersten Kapitel ebenfalls beschrieben.

Richtig los geht es in Kapitel 2, und ab dort geht es didaktisch Schritt für Schritt. Wer neu in Java unterwegs ist, wird von Kapitel 2 am meisten profitieren. Wer Kenntnisse in C hat, kann gleich in Kapitel 3 einsteigen. Wer schon in C++ objektorientiert programmiert hat, kann Kapitel 3 überfliegen und dann einsteigen.

Mit dem Buch und einer Entwicklungsumgebung des Vertrauens lassen sich die ersten Programme entwickeln. Zum Lernen einer neuen Programmiersprache reicht das Lesen aber nicht aus. Zum Trainieren der Fingerfertigkeit dienen die Übungsaufgaben auf der CD. Da Lösungen beigelegt sind, lassen sich die eigenen Lösungen gut mit den Musterlösungen vergleichen. Vielleicht bietet die Buchlösung noch eine interessante Lösungsidee oder Alternative an.

Lernstrategien

Wer das Buch im Selbststudium nutzt, wird wissen wollen, wie man ein Buch erfolgreich liest. Schlüssel für die Erkenntnisse ist wie immer die Psychologie, die untersucht, unter welchen Lesebedingungen ein Text optimal verstanden werden kann. Die Methode, die ich vorstellen möchte, heißt PQ4R-Methode, bekannt nach den Anfangsbuchstaben der Schritte, die die Methode vorgibt:

gp  Vorschau (Preview): Zunächst sollte man sich über das Kapitel einen ersten Überblick verschaffen, etwa durch Blättern im Inhaltsverzeichnis und in den Seiten der einzelnen Kapitel. Abbildungen und Tabellen sollen etwas länger angeschaut werden, da sie schon den Inhalt verraten und Lust auf den Text vermitteln.
gp  Fragen (Question): Jedes Kapitel versucht einen thematischen Block zu vermitteln. Vor dem Lesen sollte man sich überlegen, welche Fragen das Kapitel beantworten soll.
gp  Lesen (Read). Jetzt geht's los: Der Text wird durchgelesen. Wenn es nicht gerade ein geliehenes Bücherei-Buch ist, sollte man Passagen, die einem wichtig erscheinen, mit vielen Farben hervorheben und mit Randbemerkungen versehen. Das Gleiche gilt für neue Begriffe. Die vorher gestellten Fragen sollte man beantworten können. Wenn neue Fragen auftauchen: Im Gedächtnis abspeichern!
gp  Nachdenken (Reflect): Egal, ob motiviert oder nicht – das ist ein interessantes Ergebnis einer anderen Studie –, lernen kann man immer. Der Erfolg hängt nur davon ab, wie tief das Wissen verarbeitet wird (elaborierte Verarbeitung). Dazu müssen die Themen mit anderen Themen verknüpft werden. Überlege, wie die Aussagen mit den anderen Teilen zusammenpassen. Das ist auch ein guter Zeitpunkt für praktische Übungen. Für die angegebenen Beispiele im Buch sollte man sich eigene Beispiele überlegen. Wenn der Autor eine if-Anfrage mit dem Alter beschreibt, wäre eine Idee etwa eine if-Anfrage mit der Hüpfballgröße.
gp  Wiedergeben (Recite): Die zuvor gestellten Fragen sollten sich nun beantworten lassen – und zwar ohne den Text. Für mich ist das Schreiben eine gute Möglichkeit, um über mein Wissen zu reflektieren, doch sollte dies jeder auf seine Weise tun. Allemal ist es lustig, sich während des Duschens alle Schlüsselwörter und ihre Bedeutung, den Zusammenhang zwischen abstrakten Klassen und Schnittstellen usw. klarzumachen. Ein Tipp: Lautes Erklären hilft bei vielen Arten der Problemlösung – einfach mal den Toaster zuquatschen. Noch schöner ist es, mit jemandem zusammen zu lernen und sich gegenseitig die Verfahren zu erklären. Eine interessante Visualisierungstechnik ist die Mind-Map. Ihre Intention ist die Gliederung des Inhaltes.
gp  Rückblick (Review): Noch einmal geht man das Kapitel durch und schaut, ob alles ohne weitere Fragen verstanden wurde. Es hilft nichts, sich vorher etwas erklärt zu haben, was falsch ist. Vielleicht klärt der Text auch nicht alles, und Dinge sind unsauber erklärt worden. Dann ist ein Hinweis an mich (C.Ullenboom@java-tutor.com) angebracht.

Konventionen

In diesem Buch werden folgende Konventionen verwendet: Listings und Methoden sind in nicht-proportionaler Schrift gesetzt. Bei Methodennamen folgt immer ein Klammerpaar. Die Parameter sind nicht immer aufgeführt. Neu eingeführte Begriffe sind kursiv gesetzt, und der Index verweist genau auf diese Stelle. Des Weiteren sind Dateinamen, HTTP-Adressen, Namen ausführbarer Programme und Dateiendungen (.txt) kursiv. Einige Links gehen nicht direkt auf die Ressource, sondern werden über http://java-tutor.com/go auf die tatsächliche Quelle umgeleitet, was Änderungen erleichtert.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Komplette Programmlistings sind wie folgt aufgebaut:

Listing 0.1   Javaprogrammname.java

class Trallala
..

Der Quellcode gehört zur Datei Javaprogrammname.java. Der Dateiname weicht nur vom Klassennamen ab, wenn sich noch weitere Klassendefinitionen innerhalb einer Datei befinden. Um nicht den kompletten Quellcode abzudrucken, werden zum Teil nur Ausschnitte gezeigt und das komplette Programm ist auf der CD beziehungsweise im Internet. Im folgenden Fall wird nur die main()-Funktion des Programms abgebildet.

Attribute, Konstruktoren und Methoden werden in einer speziellen Auflistung aufgeführt, die ein leichtes Auffinden im Buch erlaubt.


abstract class java.text.  DateFormat
  extends Format
implements Cloneable, Serializable

gp  Date parse( String ) throws ParseException Parst einen Datum- oder einen Zeit-String.

Im Rechteck steht der voll qualifizierte Klassen- beziehungsweise Schnittstellenname (etwa DateFormat im Paket java.text). In den nachfolgenden Zeilen sind Oberklasse (DateFormat erbt von Format) und implementierte Schnittstellen (DateFormat implementiert Cloneable und Serializable) aufgeführt. Da jede Klasse, die keine explizite Oberklasse hat, automatisch von Object erbt, ist diese nicht extra angegeben. Die Sichtbarkeit ist, wenn nicht anders angegeben, public, da dies für Bibliotheksfunktionen üblich ist. Wird eine Schnittstelle beschrieben, sind die Methoden automatisch abstrakt und öffentlich, und die Schlüsselworte abstract und public werden nicht zusätzlich angegeben.

Ausführbare Programme auf der Kommandozeile sind durch ein allgemeines Dollarzeichen am Anfang zu erkennen (auch wenn andere Betriebssysteme und Kommandozeilen ein anderes Prompt anzeigen). Die vom Anwender einzugebenden Zeichen sind fett gesetzt:

$   java ErstesGlueck  

Danksagungen

Ich hätte gerne einem großen Softwarehaus meinen Dank ausgesprochen, doch leider gibt es keinen Grund dafür. Mit einer Textverarbeitung ist es wie mit Menschen – irgendwie hat doch jeder noch mal eine zweite Chance, auch eine Textverarbeitung. Klappt irgendetwas nicht, nun gut, vielleicht geht es auf einem anderen Weg. Auch meiner Ex-Pommes-Bude nebenan habe ich schon viele Chancen gegeben – aber nichts. Die Pommes blieben weich und pampig. Die Konsequenz: Ich gehe nicht mehr hin.

Genauso ist es mit Microsoft Word oder Adobe FrameMaker. Einst war ich von FrameMaker so begeistert, doch das hielt nur einen Monat. Die Texterfassung ist umständlich, und so ging ich zu Word 7 über. Damals waren es schon etwa vierzig Seiten mit Vorlagen. Das Konvertieren ging schnell in drei Tagen über die Bühne. Als ich dann – aus Gründen, die mir heute nicht mehr bekannt sind, – zu Word 8 überging, ging das Konvertieren schon wieder los. Ich war geblendet von den Funktionen und Spielereien.

Die Ernüchterung kam zwei Monate später. Mein Dokument war auf die Größe von 100 Seiten angeschwollen, und Filialdokumente ergaben Sinn. Doch plötzlich fehlte eine Datei, andere waren defekt, und Word wollte einfach nicht ohne Fehlermeldung die Filialdokumente laden. Sie waren aus unerfindlichen Gründen als fehlerhaft markiert. Auch die Anweisung, alles zu kopieren und in ein neues Dokument zu packen, machte sie nicht wieder einsatzbereit. Dagegen ist das plötzliche Weißwerden des gesamten Texts unter Word 7 noch harmlos. Als Word anschließend noch anfing, meine Absatzvorlagen heiter durcheinander zu bringen und auch nach Ändern und Speichern immer noch die gleichen Effekte zeigte, war es so weit: Word 8 musste weg. Also wieder zurück zu Word 7? Ja! Also RTF, Absatzvorlagen wieder umdefinieren, altes Filialdokument wieder einsetzen. Die Zeit, die ich für Umformatierungen und Konvertierungen verliere, ist weg, und das Einzige, was ich gelernt habe, ist: »Sei vorsichtig bei einem MS-Produkt!« Aber erzähl’ ich damit jemandem etwas Neues?

Nun, ich darf es eigentlich gar nicht erwähnen: Der Verlag setzt das Buch in FrameMaker. Was sonst? Das Programm eignet sich zwar nicht zur Texterfassung, doch ist der Satz sehr gut, die Darstellung von Bild und Text sind überzeugend schnell und für einen möglichen späteren Druck sehr entgegenkommend. Dort lassen sich auch tausend Seiten mit Bildern und Tabellen ohne Seitenneuberechnung schnell scrollen. So sollte das immer sein. Mich beeindruckt in diesem Zusammenhang immer eine Textverarbeitung auf dem Acorn Archimedes – und zwar Impression von Computer Concepts. Sie stellt den Text beim Verschieben eines Bildes mit automatischer Neuberechnung des Textflusses pixelgenau dar. Warum habe ich das in einer PC-Textverarbeitung noch nicht gesehen? Nun denn … Von der Verlagsseite bekomme ich wieder RTF-Dateien aus FrameMaker exportiert, bearbeite sie und gebe sie dann wieder ab. Für die Texterfassung und Korrektur setze ich Word ein – mit roten Kringeln und neuer Rechtschreibung. Ein Glück, dass ich mich über die Umsetzung RTF nach Frame nicht mehr kümmern muss.

Echte Danksagungen

Ein großes Dankeschön geht an Hans-Gerd Wiegard, der große Teile des XML-Kapitels weiterentwickelt hat. Die professionellen, aufheiternden Comics stammen von Andreas Schultze (Akws@aol.com). Ein weiteres Dankeschön geht an verschiedene treue Leser, deren Namen aufzulisten viel Platz kosten würde. Ich danke auch den vielen Buch- und Artikelautoren für ihre interessanten Werke, aus denen ich mein Wissen über Java aufbauen konnte. Ich danke meinen Eltern für ihre Liebe und Geduld und meinen Freunden/Freundinnen für ihr Vertrauen.

Abschließend möchte ich dem Galileo-Verlag meinen Dank für die Realisierung und unproblematische Zusammenarbeit aussprechen. Für die Zusammenarbeit mit meiner Lektorin Judith bin ich sehr dankbar.

Feedback

Auch wenn wir die Kapitel noch so sorgfältig durchgegangen sind, ist nicht auszuschließen, dass es noch Unstimmigkeiten gibt. Wer Anmerkungen, Hinweise, Korrekturen oder Fragen zu bestimmten Punkten hat, sollte sich nicht scheuen, mir eine E-Mail unter der Adresse JavaBuch@Java-Tutor.com zu senden. Ich bin für Anregung und Kritik stets dankbar.

Und jetzt wünsche ich viel Spaß beim Lesen und Lernen von Java!

Hannover, 2005, Christian Ullenboom


Galileo Computing

Vorwort zur 4. Auflage  toptop

Zwar zeigen Studien eine Marktaufteilung von C# und Java, doch auch Java ist eine Sprache, die sich verändert und anpasst. Bei C# und .NET ist zudem ein interessantes Phänomen zu beobachten: Microsoft spricht so oft davon, dass die übrige Welt annimmt, diese Technologie müsse wichtig sein. Die Realität sieht jedoch anders aus. Ziemlich wenig neue große Projekte werden mit C# und der .NET-Plattform begonnen. Windows-Programmierer können diesem Tupel aus Sprache und Umgebung längerfristig aber nicht aus dem Weg gehen. C# macht auf der Windows-Seite in erster Linie C++ und Delphi Konkurrenz, aber nicht Java. (Vielleicht liegt das auch daran, dass Java auf der Client-Seite von Windows noch nie so wichtig war, auch wenn jedes Jahr wiederholt wird: Jetzt ist das Jahr von XXX auf dem Desktop. XXX kann wahlweise mit »Java« oder »Linux« belegt werden.)

Die Spracheigenschaft der generischen Typen, die in C++ vorhanden ist und in Java bisher ausgeschlossen wurde, ist nun in Java 5.0 fester Bestandteil der Sprache. Gleichzeitig ändert sich damit das java.util-Paket, denn alle vorgefertigten Collection-Implementierungen erlauben vom Compiler überprüfte Typen. Auch bei C# hat sich Java bedient: Das erweiterte for macht Iterationen durch Arrays und Datenstrukturen einfach. Diese neue Java 5.0-Eigenschaft wird bei den Beispiel-Programmen im Buch eingesetzt, was die Übertragung auf die alte Notation bei Compilern vor Java 5.0 nötig macht. Aus der Programmiersprache C wurde in Java 5.0 printf() eingeführt, was ebenfalls einige Programme nutzen.

Einige Korrekturen waren wieder erforderlich, etwa, dass es die Farbe PURPLE in java.awt.Color gar nicht gibt. Einige Kapitel wurden entfernt und auf die Webseite externalisiert – etwa Farbmodelle, WAP und Mathe-Sachen. Zu den Neuigkeiten gehören: Preferences, Properties im XML-Format, Singletons, JTidy, Java Units Specification, RSA-Verschlüsselung, XPath und vieles, vieles mehr. Die Grafik-Beispiele zeichnen jetzt nicht mehr direkt auf ein Fenster, sondern auf eine extra Zeichenfläche, die als Komponente auf das Fenster gelegt wird. Auch zur Eclipse-IDE findet der Leser jetzt noch mehr Tipps und Tricks.




1  Damit habe ich mit Georg und Thomas eine Wette verloren – sie durften bei einer großen Imbisskette so viel essen wie sie wollten. Ich hatte später den Spaß, als wir mit dem Auto nach Hause fuhren und dreimal an der Straße anhalten mussten.

2  Versionsfanatismus?

3  Aus einem Online-Magazin vom 13. Mai 2002: »A senior Microsoft Corp. executive told a federal court last week that sharing information with competitors could damage national security and even threaten the U. S. war effort in Afghanistan. He later acknowledged that some Microsoft code was so flawed it could not be safely disclosed.«

4  Microsoft hat in den Entwicklungslabors immense Sicherheitsprobleme. Immer wieder verschwinden Vorversionen von Programmen samt Sicherheitskopien. Dies führt dazu, dass Microsoft unfertige Programmversionen ausliefern und Versionsnummern überspringen musste. Wer über den Aufenthalt von MS Project 2.0, Works 1.0 für Windows, MS DOS 6.1, Excel 1.0, Word 3.0/4.0/5.0 für Windows, Windows NT 1.0/2.0/3.0 Aussagen machen kann, sollte sich bitte an eine Microsoft-Niederlassung wenden.

5  Ja, o.k., TeX ist auch eine Lösung.

 << zurück
 
  Zum Katalog
Zum Katalog: Java ist auch eine Insel
Java ist auch eine Insel
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Einstieg in Java
Einstieg in Java


Zum Katalog: Java lernen mit Eclipse 3
Java lernen mit Eclipse


Zum Katalog: Einstieg in Eclipse 3.0
Einstieg in Eclipse 3.0


Zum Katalog: Tomcat 5
Tomcat 5


Zum Katalog: Cocoon 2 und Tomcat
Cocoon 2 und Tomcat


Zum Katalog: Java und XML
Java und XML


Zum Katalog: Java für Windows
Java für Windows


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info





Copyright © Galileo Press GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de