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

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Exceptions
7 Generics<T>
8 Äußere.innere Klassen
9 Besondere Klassen der Java SE
10 Architektur, Design und angewandte Objektorientierung
11 Die Klassenbibliothek
12 Bits und Bytes und Mathematisches
13 Datenstrukturen und Algorithmen
14 Threads und nebenläufige Programmierung
15 Raum und Zeit
16 Dateien, Verzeichnisse und Dateizugriffe
17 Datenströme
18 Die eXtensible Markup Language (XML)
19 Grafische Oberflächen mit Swing
20 Grafikprogrammierung
21 Netzwerkprogrammierung
22 Verteilte Programmierung mit RMI
23 JavaServer Pages und Servlets
24 Datenbankmanagement mit JDBC
25 Reflection und Annotationen
26 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort
Ihre Meinung?

Spacer
 <<   zurück
Java ist auch eine Insel von Christian Ullenboom
Das umfassende Handbuch
Buch: Java ist auch eine Insel

Java ist auch eine Insel
geb., mit DVD
1482 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1506-0
Pfeil Vorwort
  Pfeil Über dieses Buch
  Pfeil Vorwort zur 9. Auflage

»Mancher glaubt, schon darum höflich zu sein, weil er sich überhaupt noch der Worte und nicht der Fäuste bedient.« – Friedrich Hebbel (1813–1863)

Vorwort

Am 23. Mai 1995 stellten auf der SunWorld in San Francisco der Chef vom damaligen Suns Science Office, John Gage, und Netscape-Mitbegründer Marc Andreessen die neue Programmiersprache Java und deren Integration in den Webbrowser Netscape vor. Damit begann der Siegeszug einer Sprache, die uns elegante Wege eröffnet, um plattformunabhängig zu programmieren und objektorientiert unsere Gedanken abzubilden. Die Möglichkeiten der Sprache und Bibliothek sind an sich nichts Neues, aber so gut verpackt, dass Java angenehm und flüssig zu programmieren ist. Dieses Buch beschäftigt sich in 26 Kapiteln mit Java, den Klassen, der Design-Philosophie und der objektorientierten Programmierung.


Rheinwerk Computing - Zum Seitenanfang

Über dieses Buch  Zur nächsten ÜberschriftZur vorigen Überschrift


Rheinwerk Computing - Zum Seitenanfang

Zielgruppe  Zur nächsten ÜberschriftZur vorigen Überschrift

Die Kapitel dieses Buchs sind für Einsteiger in die Programmiersprache Java wie auch für Fortgeschrittene konzipiert. Kenntnisse in einer strukturierten Programmiersprache wie C, Delphi oder Visual Basic und Wissen über objektorientierte Technologien sind hilfreich, weil das Buch nicht explizit auf eine Rechnerarchitektur eingeht oder auf die Frage, was Programmieren eigentlich ist. Wer also schon in einer beliebigen Sprache programmiert hat, liegt mit diesem Buch genau richtig!

Was dieses Buch nicht ist

Dieses Buch darf nicht als Programmierbuch für Anfänger verstanden werden. Wer noch nie programmiert hat und mit dem Wort »Übersetzen« in erster Linie Dolmetschen verbindet, der 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 sie ersetzt nicht die Java Language Specification (JLS: http://java.sun.com/docs/books/jls/).

Die Java-Technologien sind in den letzten Jahren explodiert, sodass die 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 ich mit der 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 etwa objektorientierter Analyse/Design, UML, verteilter Programmierung, Enterprise JavaBeans, Datenbankanbindung, OR-Mapping, Web-Services, dynamischen Webseiten und vielen anderen Themen. Hier muss ein Spezialbuch die Neugier befriedigen.

Die Insel trainiert die Syntax der Programmiersprache, den Umgang mit den wichtigen Standardbibliotheken, Entwicklungstools und Entwicklungsumgebungen, objektorientierte Analyse und Design, Entwurfsmuster und Programmkonventionen. Sie hilft aber weniger, am Abend bei der Party die hübschen Mädels zu beeindrucken und mit nach Hause zu nehmen. Sorry.


Rheinwerk Computing - Zum Seitenanfang

Warum es noch ein Java-Buch gibt ...  Zur nächsten ÜberschriftZur vorigen Überschrift

Meine ursprüngliche Beschäftigung mit Java hängt eng mit einer universitären Pflichtveranstaltung zusammen. In unserer Projektgruppe beschäftigten wir uns 1997 mit einer objektorientierten Dialogspezifikation. Da ich den Seminarteilnehmern Java vorstellen wollte – Alternativen waren Objective-C, C(++) –, arbeitete ich meinen ersten Foliensatz für den Seminarvortrag aus. 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 zu viele Seiten umfasste und die vorliegende Einleitung mehr oder weniger zur Seminararbeit verwurstet wurde; zumal das Tutorial zwischendurch immer dicker geworden war, da ich für meine ersten Java-Schulungen eine Seminarunterlage benötigte.

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 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. Die Verlage konnten mir nur mitteilen, dass die Zeit des Amiga vorbei sei. [Damit habe ich eine Wette gegen Georg und Thomas verloren – sie durften bei einer großen Imbisskette so viel essen, wie sie wollten. Ich hatte später meinen Spaß, als wir mit dem Auto nach Hause fuhren und dreimal anhalten mussten. ] Die Prognosen für Java stehen besser, weil der Einsatz von Java mittlerweile so gefestigt ist wie der von COBOL bei Banken und Versicherungen. Und da die Insel seit zwölf Jahren – die erste Version gab es 1998 – verfügbar und besonders die Online-Variante beliebt ist, stellt sich heute die Frage nach einem »neuen« Java-Buch weniger denn je.

Heute sehe ich die Insel als ein sehr facettenreiches Java-Buch für die ambitionierten Entwickler an, die hinter die Kulissen schauen wollen. Ihr Detailgrad wird in dieser Breite von keinem anderen (mir bekannten) deutsch- oder englischsprachigen Buch erreicht.


Rheinwerk Computing - Zum Seitenanfang

Software und Versionen  Zur nächsten ÜberschriftZur vorigen Überschrift

Als Grundlage für das Buch dient die Java Platform Standard Edition (Java SE) in der Version 6 in der Implementierung von Oracle, die Java Development Kit (JDK) genannt wird. Das JDK besteht im Wesentlichen aus einem Compiler und einer Laufzeitumgebung (Interpreter) und ist für die Plattformen Windows, Linux und Solaris erhältlich. Ist das System kein Windows, Linux oder Solaris, gibt es Laufzeitumgebungen von anderen Unternehmen bzw. vom Hersteller der Plattform: Für Apples Mac OS X gibt es die Java-Laufzeitumgebung von Apple selbst, und IBM bietet für IBM System i (ehemals iSeries) ebenfalls eine Laufzeitumgebung. Die Einrichtung dieser Exoten ist kein Teil des Buchs.

Eine grafische Entwicklungsoberfläche (IDE) ist nicht Teil vom JDK. Zwar verlasse ich mich ungern auf einen Hersteller, weil die Hersteller unterschiedliche Entwicklergruppen ansprechen, doch sollen in diesem Buch die freien Entwicklungsumgebungen Eclipse und NetBeans Verwendung finden. Die Beispielprogramme lassen sich grundsätzlich mit beliebigen anderen Entwicklungsumgebungen, wie etwa IntelliJ IDEA oder JDeveloper, verarbeiten oder mit einem einfachen ASCII-Texteditor, wie Notepad (Windows) oder vi (Unix), 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 der appletviewer aus dem JDK wichtig oder jeder Webbrowser.

Welche Java-Version verwenden wir?

Seit Oracle (damals noch von Sun geführt) die Programmiersprache Java 1995 mit Version 1.0 vorgestellt hat, drehte sich die Versionsspirale bis Version 6 (gleichbedeutend mit Versionsnummer 1.6). Besonders für Java-Buch-Autoren stellt sich die Frage, auf welcher Java-Version ihr Text aufbauen muss und welche Bibliotheken es beschreiben soll. Ich habe das Problem so gelöst, dass ich immer die Möglichkeiten der neuesten Version beschreibe, was zur Drucklegung die Java SE 6 war. Für die Didaktik der objektorientierten Programmierung ist die Versionsfrage glücklicherweise unerheblich.

Da viele Unternehmen noch unter Java 5 entwickeln, wirft die Nutzung der Java-Version 6 unter Umständen Probleme auf, denn nicht jedes Beispielprogramm aus der Insel lässt sich per Copy & Paste fehlerfrei in das eigene Projekt übertragen. Da Java 6 aber keine fundamental neuen Möglichkeiten in der Programmiersprache bietet, übersetzt ein Java 5-Compiler jedes [… bis auf eine kleine Ausnahme, bedingt durch Annotationen. ] Beispielprogramm des Buchs, und es gibt nur Compilerfehler, wenn Bibliotheksmethoden genutzt werden, die erst ab Java 6 zur Verfügung stehen.

Die Version Java 6 ist schon länger aktuell und an der Nachfolgeversion Java 7 arbeitet Oracle intensiv. Daher zeigt das Buch schon auf, welche Fähigkeiten bis jetzt in der kommenden Version von 7 implementiert sind.


Rheinwerk Computing - Zum Seitenanfang

Das Buch in der Lehre einsetzen  Zur nächsten ÜberschriftZur vorigen Überschrift

»Die Insel« eignet sich ideal zum Selbststudium. Das erste Kapitel dient zum Warmwerden und plaudert ein wenig über dieses und jenes. Wer auf dem Rechner noch keine Entwicklungsumgebung installiert hat, sollte zuerst das JDK von Oracle installieren.

Weil das JDK nur Kommandozeilentools installiert, sollte jeder Entwickler eine grafische IDE (Integrated Development Environment) installieren, da eine IDE die Entwicklung von Java-Programmen deutlich komfortabler macht. Eine IDE bietet gegenüber der rohen Kommandozeile einige Vorteile:

  • Das Editieren, Kompilieren und Laufenlassen eines Java-Programms ist schnell und einfach über einen Tastendruck oder Mausklick möglich.
  • Ein Editor sollte die Syntax von Java farbig hervorheben (Syntax-Highlighting).
  • 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 an Eclipse seine Freude haben. Es wird im ersten Kapitel ebenfalls beschrieben.

Zum Entwickeln von Software ist die Hilfe unerlässlich. Sie ist von der Entwicklungsumgebung in der Regel über einen Tastendruck einsehbar oder online zu finden. Unter welcher URL sie verfügbar ist, erklärt ebenfalls Kapitel 1.

Richtig los geht es mit Kapitel 2, und von da an didaktisch Schritt für Schritt weiter. Wer Kenntnisse in C hat, kann Kapitel 2 überblättern. Wer schon in C++/C# objektorientiert programmiert hat, kann Kapitel 3 überfliegen und dann einsteigen. Objektorientierter Mittelpunkt des Buchs ist Kapitel 6: Es vermittelt die OO-Begriffe Klasse, Methode, Assoziation, Vererbung, dynamisches Binden… Nach Kapitel 6 ist die objektorientierte Grundausbildung abgeschlossen, und nach Kapitel 10 sind die Grundlagen von Java bekannt. Es folgen Vertiefungen in einzelne Bereiche der Java-Bibliothek.

Mit diesem Buch und einer Entwicklungsumgebung Ihres Vertrauens können Sie die ersten Programme entwickeln. Um eine neue Programmiersprache zu erlernen, reicht das Lesen aber nicht aus. Mit den Übungsaufgaben auf der DVD können Sie deshalb auch Ihre Fingerfertigkeit trainieren. 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.

Persönliche Lernstrategien

Wer das Buch im Selbststudium nutzt, wird wissen wollen, was eine erfolgreiche Lernstrategie ist. Der Schlüssel zur Erkenntnis ist, wie so oft, die Lernpsychologie, die untersucht, unter welchen Lesebedingungen ein Text optimal verstanden werden kann. Die Methode, die ich vorstellen möchte, heißt PQ4R-Methode, benannt nach den Anfangsbuchstaben der Schritte, die die Methode vorgibt:

  • Vorschau (Preview): Zunächst sollten Sie sich einen ersten Überblick über das Kapitel verschaffen, etwa durch Blättern im Inhaltsverzeichnis und in den Seiten der einzelnen Kapitel. Schauen Sie sich die Abbildungen und Tabellen etwas länger an, da sie schon den Inhalt verraten und Lust auf den Text vermitteln.
  • Fragen (Question): Jedes Kapitel versucht, einen thematischen Block zu vermitteln. Vor dem Lesen sollten Sie sich überlegen, welche Fragen das Kapitel beantworten soll.
  • Lesen (Read): Jetzt geht’s los, der Text wird durchgelesen. Wenn es nicht gerade ein geliehenes Bücherei-Buch ist, sollten Sie Passagen, die Ihnen wichtig erscheinen, mit vielen Farben hervorheben und mit Randbemerkungen versehen. Gleiches gilt für neue Begriffe. Die zuvor gestellten Fragen sollte jeder beantworten können. Sollten neue Fragen auftauchen – im Gedächtnis abspeichern!
  • Nachdenken (Reflect): Egal, ob motiviert oder nicht – das ist ein interessantes Ergebnis einer anderen Studie –, lernen kann jeder 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. Überlegen Sie, wie die Aussagen mit den anderen Teilen zusammenpassen. Dies ist auch ein guter Zeitpunkt für praktische Übungen. Für die angegebenen Beispiele im Buch sollten Sie sich eigene Beispiele überlegen. Wenn der Autor eine if-Abfrage am Beispiel des Alters beschreibt, wäre eine Idee etwa eine if-Abfrage zur Hüpfballgröße.
  • 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 über alle Schlüsselwörter und ihre Bedeutung, den Zusammenhang zwischen abstrakten Klassen und Schnittstellen usw. klar zu werden. Ein Tipp: Lautes Erklären hilft bei vielen Arten der Problemlösung – quatschen Sie einfach mal den Toaster zu. 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. Sie dient dazu, den Inhalt zu gliedern.
  • Rückblick (Review): Nun gehen Sie das Kapitel noch einmal durch und schauen, ob Sie alles ohne weitere Fragen verstanden haben. Manche »schnellen« Erklärungen haben sich vielleicht als falsch herausgestellt. Vielleicht klärt der Text auch nicht alles. Dann ist ein an mich gerichteter Hinweis (insel@tutego.de) angebracht.

Fokus auf das Wesentliche

Einige Unterkapitel sind für erfahrene Programmierer oder Informatiker geschrieben. 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(++), C# oder andere Programmiersprachen dienen aber nicht wesentlich dem Verständnis, sondern nur dem Vergleich.

Einsteiger in Java können noch nicht zwischen dem absolut notwendigen Wissen und einer interessanten Randnotiz unterscheiden. Die Insel gewichtet aus diesem Grund das Wissen auf zwei Arten. Zunächst sind es vom Text abgesetzte Boxen, die zum Teil spezielle und fortgeschrittene Informationen bereitstellen. Des Weiteren enden einige Unterkapiteltitel auf ein *, was bedeutet, dass dieser Abschnitt übersprungen werden kann, ohne dass dem Leser etwas Wesentliches für die späteren Kapitel fehlt.


Rheinwerk Computing - Zum Seitenanfang

Organisation der Kapitel  Zur nächsten ÜberschriftZur vorigen Überschrift

Kapitel 1, »Java ist auch eine Sprache«, zeigt die Besonderheiten der Sprache Java auf. Einige Vergleiche mit anderen populären objektorientierten Sprachen werden gezogen. Die Absätze sind nicht besonders technisch und beschreiben auch den historischen Ablauf der Entwicklung von Java. Das Kapitel ist nicht didaktisch aufgebaut, sodass einige Begriffe erst in den weiteren Kapiteln vertieft werden; Einsteiger sollten es querlesen. Ebenso wird hier dargestellt, wie das Java JDK von Oracle zu beziehen und zu installieren ist, damit die ersten Programme übersetzt und gestartet werden können.

Richtig los geht es in Kapitel 2, »Sprachbeschreibung«. Es hebt Variablen, Typen und die imperativen Sprachelemente hervor und schafft mit Anweisungen und Ausdrücken die Grundlagen für jedes Programm. Hier finden auch Fallanweisungen, die diversen Schleifentypen und Methoden ihren Platz. Das alles geht noch ohne große Objektorientierung.

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

Wichtig ist für viele Probleme auch der in Kapitel 4 vorgestellte »Umgang mit Zeichenketten«. Die beiden notwendigen Klassen Character für einzelne Zeichen und String, StringBuffer/StringBuilder für Zeichenfolgen 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 split() vom String und der Scanner zerlegen Zeichenfolgen anhand von Trennern in Teilzeichenketten. Format-Objekte bringen beliebige Ausgaben in ein gewünschtes Format. Dazu gehört auch die Ausgabe von Dezimalzahlen.

Mit diesem Vorwissen über Objekterzeugung und Referenzen kann der nächste Schritt erfolgen: In Kapitel 5 werden wir »Eigene Klassen schreiben«. Anhand von Spielen und Räumen modellieren wir Objekteigenschaften und zeigen Benutzt- und Vererbungsbeziehungen auf. Wichtige Konzepte, wie statische Eigenschaften, dynamisches Binden, abstrakte Klassen und Schnittstellen (Interfaces) sowie Sichtbarkeit, finden dort ihren Platz. Da Klassen in Java auch innerhalb anderer Klassen liegen können (innere Klassen), setzt sich ein eigenes Unterkapitel damit auseinander.

Ausnahmen – Kapitel 6, »Exceptions« – 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.

Mit Generics lassen sich Klassen, Schnittstellen und Methoden mit einer Art Typ-Platzhalter deklarieren, wobei der konkrete Typ erst später festgelegt wird. Kapitel 7, »Generics<T>«, gibt einen Einblick in die Technik.

Kapitel 8, »Äußere.innere Klassen«, beschreibt, wie sich Klassen ineinander verschachteln lassen. Das verbessert die Kapselung, denn auch Implementierungen können dann sehr lokal sein.

Danach sind die Fundamente gelegt, und die verbleibenden Kapitel dienen dem Ausbau des bereits erworbenen Wissens. Kapitel 9, »Besondere Klassen der Java SE«, geht auf die Klassen ein, die für die Java-Bibliothek zentral sind, etwa Vergleichsklassen, Wrapper-Klassen oder die Klasse Object, die die Oberklasse aller Java-Klassen ist.

Kapitel 10, »Architektur, Design und angewandte Objektorientierung«, zeigt Anwendungen guter objektorientierter Programmierung und stellt Entwurfsmuster (Design-Pattern) vor. An unterschiedlichen Beispielen demonstriert das Kapitel, wie Schnittstellen und Klassenhierarchien gewinnbringend in Java eingesetzt werden. Es ist der Schlüssel dafür, nicht nur im Kleinen zu denken, sondern auch große Applikationen zu schreiben.

Nach den ersten zehn Kapiteln haben die Leser die Sprache Java nahezu komplett kennengelernt. Da Java aber nicht nur eine Sprache ist, sondern auch ein Satz von Standardbibliotheken, konzentriert sich die zweite Hälfe des Buchs auf die grundlegenden APIs. Jeweils am Ende eines Kapitels findet sich ein Unterkapitel »Zum Weiterlesen« mit Verweisen auf interessante Internetadressen – in der Java-Sprache finally{} genannt. Hier kann der Leser den sequenziellen Pfad verlassen und sich einzelnen Themen widmen, da die Themen in der Regel keine direkte Abhängigkeit haben.

Die Java-Bibliothek besteht aus fast 4.000 Klassen, Schnittstellen und Annotationen. Das Kapitel 11, »Die Klassenbibliothek«, gibt eine Übersicht über die wichtigsten Pakete und greift einige Klassen aus der Bibliothek heraus, etwa zum Laden von Klassen. Hier finden sich auch Klassen zur Konfiguration von Anwendungen oder Möglichkeiten zum Ausführen externer Programme.

Kapitel 12 stellt »Bits und Bytes und Mathematisches« vor. Die Klasse Math hält typische mathematische Methoden 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. Die meisten Entwickler benötigen nicht viel Mathematik, daher ist es das Schlusskapitel.

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

Kapitel 14 kümmert sich um »Threads und nebenläufiger Programmierung«. Das Kapitel umfasst auch die Koordination mehrerer kooperierender oder konkurrierender Threads.

Zeitzonen und unterschiedliche Ausgabeformate für Datumswerte sind Thema in Kapitel 15, »Raum und Zeit«. Darunter fallen auch Datumsberechnungen auf der Grundlage des gregorianischen Kalenders.

In Kapitel 16, »Dateien, Verzeichnisse und Dateizugriffe«, wird der Fokus auf die Ein-/Ausgabe gelenkt. Zuerst zeigen wir, wie sich Attribute von Dateien und Verzeichnissen auslesen lassen, und dann, wie sich wahlfreier Zugriff auf eine Datei realisieren lässt. Anschließend folgt in Kapitel 17, »Datenströme«, ein wichtiges Konzept, das auch bei Strömen aus Netzwerken, Datenbanken oder Schnittstellen wichtig ist. Die Datenströme können dabei durch Filter geschickt werden. Von letzteren stellen wir einige vor, 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 Objekts ausgelesen und so in einen Datenstrom geschrieben, dass sich das Objekt später wiederherstellen lässt. Eine eigene Speicherroutine kann somit entfallen.

Ein neues Thema spannt Kapitel 18 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 19 beschäftigt sich mit »Grafischen Oberflächen mit Swing«. Es stellt die Swing-Komponenten zur Interaktion vor, wie zum Beispiel Schaltflächen, geht auf die Behandlung von Ereignissen ein, die aus Benutzeraktionen resultieren, und beschreibt Container, die andere Komponenten aufnehmen und layouten.

Das anschließende Kapitel 20 deckt die zweite Aufgabe der grafischen Oberflächen ab, indem es auf die »Grafikprogrammierung« eingeht. 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 in die direkte Ausgabe von Grafik-Primitiven wie Linien und zum anderen in Komponenten für grafische Oberflächen. Das Kapitel behandelt die Themen Fenster, Zeichenketten und Zeichensätze, Farben und Bilder.

In Kapitel 21 geht es mit »Netzwerkprogrammierung« weiter. Wir sehen, wie Daten von Webservern bezogen werden können und wie eine eigene Client-Server-Kommunikation aufgebaut wird. Bei Webservern werden wir CGI-Programme ansprechen, um an gewünschte Inhalte zu kommen. Außer auf die gesicherte Verbindung TCP gehen wir auch auf ungesicherte UDP-Verbindungen ein.

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

Mit Kapitel 23, »JavaServer Pages und Servlets«, geht es dann in die Welt der dynamischen Webseiten. Java ist zurzeit auf der Serverseite sehr populär, und dort besonders beim sogenannten Enterprise-Computing. Mit JavaServer Pages ist es besonders einfach, dynamische Webinhalte 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.

Das Thema »Datenbankmanagement mit JDBC« ist Inhalt von Kapitel 24. Als freie, quelloffene Beispieldatenbank wird HSQLDB vorgestellt, da sie sehr leicht zu installieren und zu betreiben ist und praktischerweise Beispieldaten mitbringt. Die Java-Beispiele bauen eine Verbindung zu HSQLDB auf, setzen SQL-Anweisungen ab, holen die Ergebnisse herein und visualisieren sie.

Mit Kapitel 25 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 Annotationen waren eine bedeutende Neuerung in Java 5.

In Kapitel 26, »Dienstprogramme für die Java-Umgebung«, geht es um die zum JDK gehörigen Programme und einige Extratools, die für Ihre Arbeit nützlich sein können. Im Mittelpunkt stehen 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.

In diesem Buch werden folgende Konventionen verwendet:

  • 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, Programmoptionen und Dateiendungen (.txt) kursiv. Einige Links führen nicht direkt zur Ressource, sondern werden über http://www.tutego.de/go zur tatsächlichen Quelle umgeleitet, was Änderungen erleichtert.
  • Begriffe der Benutzeroberfläche stehen in Kapitälchen.
  • Listings, Methoden und sonstige Programmelemente sind in nicht-proportionaler Schrift gesetzt. An einigen Stellen wurde hinter eine Listingzeile ein abgeknickter Pfeil als Sonderzeichen gesetzt, das den Zeilenumbruch markiert. Der Code aus der nächsten Zeile gehört also noch zur vorigen.
  • Um im Programmcode Compilerfehler oder Laufzeitfehler anzuzeigen, steht in der Zeile ein Fehler. So ist auf den ersten Blick abzulesen, dass die Zeile nicht compiliert wird oder zur Laufzeit aufgrund eines Programmierfehlers eine Ausnahme auslöst. Beispiel: int p = new java.awt.Point(); // Fehler Compilerfehler: Type mismatch
  • Bei Methodennamen im Fließtext folgt immer ein Klammerpaar. Die Parameter werden nur dann aufgeführt, wenn sie wichtig sind.
  • Um eine Gruppe von Methoden anzugeben, symbolisiert die Kennung XXX einen Platzhalter. So zeigt zum Beispiel printXXX() die Methoden println(), print() und printf() an. Aus dem Kontext geht hervor, welche Methoden gemeint sind.
  • Raider heißt jetzt Twix, und Sun ging Anfang 2010 zu Oracle. Auch wenn es für langjährige Entwickler hart ist: Der Name Sun verschwindet und schon in dieser Auflage. Er taucht immer nur dann auf, wenn es um eine Technologie geht, die von Sun initiiert wurde und in der Zeit lag, in der Sun sie verantwortete.

Programmlistings

Komplette Programmlistings sind wie folgt aufgebaut:

Listing 0.1  Person.java

class Person
{
}

Der abgebildete Quellcode befindet sich in der Datei Person.java. Befindet sich der Typ (Klasse, Aufzählung, Schnittstelle, Annotation) in einem Paket, steht die Pfadangabe beim Dateinamen:

Listing 0.2  com/tutego/insel/Person.java

package com.tutego.insel.Person;
class Person { }

Um Platz zu sparen, stellt das Buch oftmals Quellcode-Ausschnitte dar. Der komplette Quellcode ist auf der DVD beziehungsweise im Internet verfügbar. Hinter dem Typ folgen in dem Fall Kennungen des abgedruckten Teils. Ist nur die Typdeklaration einer Datei ohne package- oder import-Deklaration aufgelistet, so steht hinter dem Dateinamen der Typ, etwa so:

Listing 0.3  Person.java, Person

Listing 0.4  Person.java, House

Im folgenden Fall wird nur die main()-Methode abgebildet:

Listing 0.5  Person.java, main()

Wird ein Ausschnitt einer Datei Person.java abgebildet, steht »Ausschnitt« oder »Teil 1«, »Teil 2«… dabei:

Listing 0.6  Person.java, Ausschnitt

Listing 0.7  Person.java, main() Teil 1

Gibt es Beispielprogramme für bestimmte Klassen, so enden die Klassennamen dieser Programme im Allgemeinen auf -Demo. Für die Java-Klasse DateFormat heißt somit ein Beispielprogramm, das die Funktionalität der Klasse DateFormat vorführt, DateFormatDemo.

API-Dokumentation im Buch

Attribute, Konstruktoren und Methoden finden sich in einer speziellen Auflistung, die es ermöglicht, sie leicht im Buch zu finden und die Insel als Referenzwerk zu nutzen.


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

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

Im Rechteck steht der vollqualifizierte Klassen- oder Schnittstellenname (etwa die Klasse DateFormat im Paket java.text) beziehungsweise der Name der Annotation. In den nachfolgenden Zeilen sind die Oberklasse (DateFormat erbt von Format) und die implementierten 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 Bibliotheksmethoden üblich ist. Wird eine Schnittstelle beschrieben, sind die Methoden automatisch abstrakt und öffentlich, und die Schlüsselwörter abstract und public werden nicht zusätzlich angegeben. In der anschließenden Aufzählung folgen Konstruktoren, Methoden und Attribute. Wenn nicht anders angegeben, ist die Sichtbarkeit public. Sind mit throws Fehler angegeben, dann handelt es sich nicht um eine RuntimeException.

Ausführbare Programme

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, die Ausgabe nicht:

$ java FirstLuck
Hart arbeiten hat noch nie jemanden getötet. Aber warum das Risiko auf sich nehmen?

Über die richtige Programmierer-»Sprache«

Die Programmierer-Sprache in diesem Buch ist Englisch, um ein Vorbild für »echte« Programme zu sein. Bezeichner wie Klassennamen, Methodennamen und auch eigene API-Dokumentationen sind auf Englisch, um eine Homogenität mit der englischen Java-Bibliothek zu schaffen. Zeichenketten und Konsolenausgaben sowie die Zeichenketten in Ausnahmen (Exceptions) sind in der Regel auf Deutsch, da es in realistischen Programmen kaum hart einkodierte Meldungen gibt – spezielle Dateien halten unterschiedliche Landessprachen vor. Zeilenkommentare sind als interne Dokumentation ebenfalls auf Deutsch vorhanden.


Rheinwerk Computing - Zum Seitenanfang

Online-Informationen und -Aufgaben  Zur nächsten ÜberschriftZur vorigen Überschrift

Dieses Buch ist in der aktuellen Version im Internet unter der Adresse https://www.galileo-press.de/ erhältlich. Auf der Webseite erfahren Sie Neuigkeiten und Änderungen.

Der Quellcode der Beispielprogramme ist in fast allen Fällen entweder komplett oder mit den bedeutenden Ausschnitten im Buch abgebildet. Ein Zip-Archiv mit allen Beispielen ist auf der DVD und zusätzlich auf der Buch-Webseite http://www.tutego.de/javabuch/ erhältlich. Alle Programmteile sind frei von Rechten und können ungefragt in eigene Programme übernommen werden.

Wer eine Programmiersprache erlernen möchte, muss sie wie eine Fremdsprache sprechen. Begleitend gibt es eine Aufgabensammlung auf der DVD und viele Musterlösungen auf folgender Webseite:

http://www.tutego.de/aufgaben/j/

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


Rheinwerk Computing - Zum Seitenanfang

Weiterbildung durch tutego  Zur nächsten ÜberschriftZur vorigen Überschrift

Unternehmen, die zur effektiven Weiterbildung ihrer Mitarbeiter IT-Schulungen wünschen, können einen Blick auf http://www.tutego.de/seminare/ werfen. tutego bietet über hundert IT-Seminare zu Java-Themen, C(++), C#/.NET, Datenbanken (Oracle, MySQL), XML (XSLT, Schema), Netzwerken, Internet, Office etc. Zu den Java-Themen zählen unter anderem:

  • Java-Einführung, Java für Fortgeschrittene, Java für Umsteiger
  • Softwareentwicklung mit Eclipse
  • nebenläufiges Programmieren mit Threads
  • JavaServer Faces (JSF), JavaServer Pages (JSP) , Servlets und weitere Web-Technologien
  • Datenbankanbindung mit JDBC, OR-Mapping mit JPA und Hibernate
  • grafische Oberflächen mit Swing und JFC
  • Java und XML
  • mobile Endgeräte mit Java ME programmieren
  • Java EE 5 und Java EE 5 (EJB 3)

Rheinwerk Computing - Zum Seitenanfang

Danksagungen  Zur nächsten ÜberschriftZur vorigen Überschrift

Der größte Dank gebührt natürlich Oracle. Ohne die Oracle Corporation (beziehungsweise Sun Microsystems, die 1991 mit der Entwicklung begannen) gäbe es kein Java, und ohne Java gäbe es auch nicht dieses Java-Buch. (Vielleicht hätte ich dann ein Objective-C-Buch geschrieben, welch’ grausame Vorstellung…). Ich wünsche mir von Oracle zwar etwas mehr Enthusiasmus bei der Weiterentwicklung der Sprache, aber so muss ich das Buch nicht jedes Jahr umschreiben – so hat es ja auch einen positiven Aspekt, wenn Oracle nur alle zwei Jahre eine neue Version herausbringt.

Die professionellen, aufheiternden Comics stammen von Andreas Schultze (Akws@aol.com). Ich danke auch den vielen Buch- und Artikelautoren für ihre interessanten Werke, aus denen ich mein Wissen über Java schöpfen konnte. Ich danke meinen Eltern für ihre Liebe und Geduld und meinen Freunden und Freundinnen für ihr Vertrauen. Ein weiteres Dankeschön geht an verschiedene treue Leser, deren Namen aufzulisten viel Platz kosten würde; ihnen ist die Webseite http://www.tutego.de/javabuch/korrekteure.htm gewidmet.

Java lebt – vielleicht sollte ich sogar »überlebt« sagen… – durch viele freie gute Tools und eine aktive Open-Source-Community. Ein Dank geht an alle Unbekannten, die Java-Tools wie Eclipse, NetBeans, Ant, Maven, GlassFish, Tomcat, JBoss und Hunderte andere Bibliotheken schreiben und warten: Ohne Sie wäre Java heute nicht da, wo es ist.

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


Rheinwerk Computing - Zum Seitenanfang

Feedback  topZur vorigen Überschrift

Auch wenn wir die Kapitel noch so sorgfältig durchgegangen sind, ist es nicht auszuschließen, dass es noch Unstimmigkeiten [Bei mir wird gerne ein »wir« zum »wie« – wie(r) dumm, dass die Tasten so eng beieinanderliegen. ] gibt; vielmehr ist es bei 1.000 Seiten wahrscheinlich. Wer Anmerkungen, Hinweise, Korrekturen oder Fragen zu bestimmten Punkten oder zur allgemeinen Didaktik hat, der sollte sich nicht scheuen, mir eine E-Mail unter der Adresse C.Ullenboom@tutego.de zu senden. Ich bin für Anregung, Lob und Tadel stets empfänglich.

In der Online-Version des Buchs haben wir eine besondere Möglichkeit zur Rückmeldung: Unter jedem Kapitel gibt es eine Textbox, sodass Leser uns schnell einen Hinweis schicken können. In der Online-Version können wir zudem Fehler schnell korrigieren, denn es gibt zum Teil bedauerliche Konvertierungsprobleme vom Buch ins HTML-Format, und einige Male blieb das Hochzeichen (^) auf der Strecke, sodass statt »2^16« im Text ein »216« die Leser verwunderte.

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

Sonsbeck im Jahr 2010, Jahr 0 nach Oracles Übernahme

Christian Ullenboom



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
 <<   zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Java SE Bibliotheken






 Java SE Bibliotheken


Zum Katalog: Professionell entwickeln mit Java EE 7






 Professionell
 entwickeln mit
 Java EE 7


Zum Katalog: Einstieg in Eclipse






 Einstieg in
 Eclipse


Zum Katalog: Einstieg in Java






 Einstieg in
 Java


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2011
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.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de