Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Java ist auch eine Insel von Christian Ullenboom
Buch: Java ist auch eine Insel (Galileo Computing)
gp Kapitel Vorwort
gp Vorwort Version 2.0
gp Vorwort Version 3.0
gp Vorwort Version 4

Kapitel 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 gibt uns elegante Programmiermöglichkeiten; 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 noch 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), arbeitete ich meinen ersten Foliensatz für den Seminarvortrag aus. Dieser wurde auch die Basis für meine Schulungsunterlagen, die ich in mehr als fünfzig 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 Amigas vorbei ist.1 Die Prognosen für Java stehen schon besser, denn der Einsatz von Java in der Wirtschaft fängt gerade erst richtig an.

Und für wen ist das Tutorial?

Anfangs war es nicht mein Ziel, ein Buch für eine bestimmte Zielgruppe zu schreiben. Es ist für mich entstanden, um Java gut kennen zu lernen. Nach fünf Jahren Arbeit mit Java und Java-Schulungen (http://java-tutor.com/seminare/) haben sich jedoch die Schwerpunkte gewandelt, und das Buch (welches ich immer »Insel« nenne) ist zu einem didaktisch aufbereiteten Lehrbuch geworden, das in seinem Schwierigkeitsgrad nach hinten hin immer komplexer wird. Die unterschiedlichen Kapitel sind für Anfänger der Programmiersprache Java wie auch für Fortgeschrittene konzipiert. 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. Kenntnisse in einer strukturierten Programmiersprache wie C, Delphi, Visual Basic und ein Verständnis für objektorientierte Technologien sind hilfreich. An einigen Stellen gibt es Verweise auf C(++), diese dienen aber nicht wesentlich dem Verständnis, sondern nur dem Vergleich.

Was das Tutorial nicht ist

Die Java-Technologien und die objektorientierten Techniken sind in den letzten fünf Jahren explodiert. Was zu Anfang noch überschaubar war, ist einer starken Spezialisierung gewichen, so dass es kaum mehr möglich ist, alles in einem Buch zu behandeln. Das möchte die Insel auch auf keinen Fall. Ein Buch, das sich speziell mit der grafischen Oberfläche Swing beschäftigt, ist vom Umfang genauso dick wie die jetzige Insel. Nicht anders verhält es sich mit den anderen Spezialthemen wie Objektorientierte Analyse/Design, UML, Verteilte Programmierung, Datenbankanbindung, Web-Dienste, dynamische Web-Seiten und viele andere Themen. Die Bereiche werden in diesem Buch bis zu einer allgemein verständlichen Tiefe behandelt, und die Wissensneugier muss dann ein Spezialbuch befriedigen.

Ebenfalls darf das Buch auch nicht als Programmierbuch für Einsteiger verstanden werden. Wer noch nie programmiert hat und unter dem Wort Übersetzen in erster Linie einen Dolmetscher versteht, sollte besser ein anderes Buch vorziehen oder parallel lesen.

Welche Software wir nutzen

Als ich 1997 mit Java begann, kamen die ersten Java-Versionen vom Schöpfer Sun auf den Markt. Bis dahin hat sich die Versionsspirale von 1.0 bis aktuell 1.4 gedreht. Als Grundlage dient daher das Java 2 Software Development Kit (kurz SDK) als Referenzimplementierung. Diese lässt sich über http://java.sun.com/ beziehen. Das Paket besteht im Wesentlichen aus einem Compiler und einem Interpreter. Das SDK ist für die Plattformen Windows, Linux und Solaris erhältlich. Eine grafische Entwicklungsoberfläche (IDE) ist nicht Teil des Pakets. Zwar verlasse ich mich ungern auf einen Hersteller, da der Markt zu dynamisch ist und die Hersteller verschiedene Entwicklergruppen ansprechen, doch in diesem Buch soll die Entwicklungsumgebung Eclipse (http://www.eclipse.org) von IBM Verwendung finden. Die Programme lassen sich aber auch mit einem einfachen ASCII-Texteditor eingeben (Notepad und vi?) und auf der Kommandozeile übersetzen. Diese Form der Entwicklung ist allerdings nicht mehr zeitgemäß, so dass 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.

Besonders für Java-Buch-Autoren stellt sich die Frage, welches Java 2 SDK und damit welche Bibliotheken beschrieben werden sollen. Ich habe das Problem so gelöst, dass immer die Möglichkeiten des neuesten JDK (zur Zeit 1.4)2 genutzt werden. Das wirft an einigen Stellen Probleme auf, beispielsweise dann, wenn eine kommerzielle Entwicklungsumgebung genutzt werden soll oder wenn Applets entwickelt werden. Kommerzielle IDEs hinken dem JDK immer etwas hinterher, und die Web-Browser, die Applets darstellen, verstehen nicht immer die aktuellen Versionen. Hier ist der Stand von 1.1 schon gut! 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. Wenn ich Anmerkungen im Text anheften würde, bliebe die Frage offen, wann ich diese streichen sollte. Galt vor ein paaren Jahren noch 1.2 als Novum, ist dies heute 1.4. 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

http://www.galileocomputing.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.

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

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

Die Seite wird in regelmäßigen Abständen aktualisiert, so dass 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, J2ME, 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 geschichtlichen Ablauf. Das Kapitel ist nicht didaktisch aufgebaut, so dass einige Begriffe erst in den weiteren Kapiteln vertieft werden. 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.

Technischer wird 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 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. Für Matrizen wird eine externe Klasse vorgeschlagen.

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

Danach sind die Grundmauern gelegt, und die verbleibenden Kapitel dienen dem Ausbau des bereits erworbenen Wissens. Dies wird in Kapitel 7, Exceptions, weiter vertieft. Ausnahmen bilden ein wichtiges Rückgrat in Programmen, da sich Fehler nie ausschließen 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 2.700 Klassen und Schnittstellen umfassenden Klassenbibliothek gibt Kapitel 8, Die Funktionsbibliothek, eine Übersicht und führt in wichtige Klassen ein, etwa Konvertieren von Datentypen.

Das Kapitel 9 beschäftigt sich dann 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 Algorithmen und Datenstrukturen, 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 XML und Java 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.

Das Kapitel 14 beschäftigt sich dann 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, Bildproduzenten und Konsumenten, Farbmodelle, Bildspeichermöglichkeiten, Filter.

Das anschließende Kapitel 15 deckt die zweite Aufgabe der grafischen Oberflächen ab: Komponenten, Ereignisse und Container. Bei den 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 Servlets ist es besonders einfach, dynamische Web-Inhalte zu formulieren, da auf die mitgeschickten Informationen vom Client sehr einfach zugegriffen werden kann. Servlets 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(n) Anwendungen 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 ein normaler Funktionsaufruf für ein lokales Objekt ist.

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, so dass 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 Interbase von Borland 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 für Java typischen Technik: Reflection. 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.

Reflection ist eine Vorbereitung auf das Kapitel 22, Komponenten durch Bohnen. Die wiederverwendbaren Softwarebausteine in Java 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.

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 23, Java Native Interface, vorstellen.

Kapitel 24 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 verschlüsselt werden.

In Kapitel 25, 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-Achiven 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 nicht zu einer Standardinstallation gehören, sind etwa Tools, die Java-Programme in C-Programme übersetzen, sie verschönern und Bytecode wieder in lesbaren Java-Quellcode umwandeln.

Am Ende des Buches widmet sich Kapitel 26 einem Style-Guide. In Teams sollen sich die Entwickler an Konventionen halten, um das entstehende Softwareprodukt einfacher zu pflegen. Hier werden einige Konventionen vorgestellt, die vom Einrücken von Quellcode bis zur Namensgebung reichen.

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 das Suchen in der Dokumentation einfacher.

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

Abbildung Java-Hife im WinHelp-Format

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 durch Farben hervorgehoben werden (Syntax Highlighting).
gp Eine kontextsensitive Hilfe zeigt bei Methoden die Parameter an, und 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, der 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, der kann gleich in Kapitel 3 einsteigen. Wer objektorientiert schon in C++ 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 Buchübungen vergleichen. Vielleicht bietet die Buchlösung noch eine interessante Lösungsidee oder Alternative an.

Lernstrategien

Wer das Buch im Selbststudium nutzt, der wird daran interessiert sein, wie ein Buch mit gutem Erfolg zu lesen ist. Schlüssel für die Erkenntnisse ist wie immer die Psychologie, die mit Untersuchungen testete, 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 Preview, Voschau: Zunächst sollte man sich über das Kapitel einen ersten Überblick schaffen, etwa durch das Blättern im Inhaltsverzeichnis und Durchblättern der Seiten des Kapitels. Abbildungen und Tabellen sollen etwas länger angeschaut werden, denn sie verraten schon den Inhalt und machen Spaß auf das Kapitel.
gp Question, Fragen: Jedes Kapitel versucht einen thematischen Block zu vermitteln. Vor dem Lesen sollte man sich überlegen, welche Fragen das Kapitel beantworten sollte.
gp Read, Lesen. Jetzt geht's los: Der Text wird durchgelesen. Wenn es nicht gerade ein geliehenes Bücherrei-Buch ist, sollte man mit vielen Farben Passagen hervorheben, die für einen wichtig erscheinen und Randbemerkungen machen. Das gleiche gilt für neue Begriffe. Die vorher gestellten Fragen sollen beantwortet werden können. Wenn neuen Fragen auftauchen: Merken!
gp Reflect, Nachdenken: Egal ob motiviert oder nicht - das ist ein interessantes Ergebnis einer anderen Studie - lernen kann man immer. Der Erfolg hängt nur damit zusammen, 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 ich eine if-Anfrage mit dem Alter beschreiben, dann wäre eine Idee etwa eine if-Anfrage mit der Hüpfballgroße.
gp Recite, Wiedergeben: Die vorher gestellten Fragen sollten sich nun lösen lassen - und zwar ohne den Text. Für mich ist das Schreiben eine gute Möglichkeit über mein Wissen zu reflektieren, aber das sollte jeder auf seine Weise machen. Allemal ist es lustig, während des Duschens sich alle Schlüsselwörter und ihre Bedeutung, der 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, mit jemanden 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 Review, Rückblick: Noch einmal geht man über das Kapitel drüber und schaut, ob alles ohne Fragen verstanden ist. 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. 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, Programme und Dateiendungen (.txt) kursiv.

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.

Methoden oder Konstruktoren werden in einer speziellen Auflistung aufgeführt, die ein leichtes Auffinden erlaubt. Im Rechteck steht der voll qualifizierte Klassen- beziehungsweise Schnittstellenname. In den nachfolgenden Zeilen sind geerbte Oberklassen und implementierte Schnittstellen aufgeführt:


abstract class java.text.DateFormat
extends Format
implements Cloneable

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

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. Wird eine Schnittstelle beschrieben, sind die Methoden automatisch abstrakt, und das Schlüsselwort abstract wird 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).

$ 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 ist: 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 sind3 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 machten Sinn. Doch plötzlich fehlte eine Datei, andere waren defekt, und Word wollte einfach nicht ohne eine Fehlermeldung die Filialdokumente laden.4 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 75 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, aber der Verlag setzt das Buch in FrameMaker. Was sonst?6 Das Programm eignet sich zwar nicht zur Texterfassung, jedoch ist der Satz sehr gut, die Darstellung von Bild und Text ü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 - das war 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

Ich danke besonders Dr. Michael Thies, Uli Holtel, Rolf Leibold, Henryk Plötz, Michael Schulte und Joerg Kulow für ihre Arbeit. Sie haben intensiv gelesen und aktiv mitgewirkt. Ebenso geht ein großes Dankeschön 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 noch Unstimmigkeiten vorhanden sind. Wer Anmerkungen, Hinweise, Korrekturen oder Fragen zu bestimmten Punkten hat, der 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!

Paderborn Hannover, irgendwann im Jahre 2004

Christian U. Ullenboom






1 Damit habe ich mit Georg und Thomas eine Wette verloren - sie dürften 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 Genauer gesagt: 1.4.2_2, da nur ab dieser Version ein schwerwiegendes Sicherheitsproblem gelöst wurde.

3 Versionsfanatismus?

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

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

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


Einstieg in Java

Enterprise JavaBeans 2.1

Einstieg in JSP 2.0

Cocoon 2 und Tomcat

UML projektorientiert

Einstieg in XML

Besser PHP programmieren




Copyright (c) Galileo Press GmbH 2004
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, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de