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 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Objektorientierte Beziehungsfragen
7 Ausnahmen müssen sein
8 Äußere.innere Klassen
9 Besondere Typen der Java SE
10 Generics<T>
11 Lambda-Ausdrücke und funktionale Programmierung
12 Architektur, Design und angewandte Objektorientierung
13 Die Klassenbibliothek
14 Einführung in die nebenläufige Programmierung
15 Einführung in Datenstrukturen und Algorithmen
16 Einführung in grafische Oberflächen
17 Einführung in Dateien und Datenströme
18 Einführung ins Datenbankmanagement mit JDBC
19 Einführung in <XML>
20 Testen mit JUnit
21 Bits und Bytes und Mathematisches
22 Die Werkzeuge des JDK
A Java SE Paketübersicht
Stichwortverzeichnis

Download:
- Beispielprogramme, ca. 20,0 MB
- Übungsaufgaben, ca. 1,8 MB
- Musterlösungen, ca. 0,8 MB

Buch bestellen
Ihre Meinung?

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

Java ist auch eine Insel
Rheinwerk Computing
1306 Seiten, gebunden, 11. Auflage
49,90 Euro, ISBN 978-3-8362-2873-2
Pfeil Vorwort
Pfeil Über dieses Buch
Pfeil Vorwort zur 11. Auflage
Pfeil Vorwort zur 10. Auflage
 
Zum Seitenanfang

Vorwort Zur vorigen ÜberschriftZur nächsten Überschrift

»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)

Am Anfang war das Wort. Viel später, am 23. Mai 1995, stellten auf der SunWorld in San Francisco der Chef vom damaligen Science Office von Sun Microsystems, 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 auszudrücken. Die Möglichkeiten der Sprache und Bibliotheken sind an sich nichts Neues, aber so gut verpackt, dass Java angenehm und flüssig zu programmieren ist und Java heute zur populärsten Programmiersprache auf unserem Planeten zählt. Dieses Buch beschäftigt sich in 20 Kapiteln mit Java, den Klassen, der Design-Philosophie, der objektorientierten Programmierung und dem Aufbau der Java-Standardbibliotheken.

 
Zum Seitenanfang

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

 
Zum Seitenanfang

Die Zielgruppe Zur vorigen ÜberschriftZur nächsten Ü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, der liegt mit diesem Buch genau richtig! Objektorientiertes Vorwissen ist von Vorteil, aber nicht notwendig.

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://tutego.de/go/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 JavaFX oder Swing beschäftigt – beides Teile von Standard-Java –, ist genauso umfangreich wie die jetzige Insel. Nicht anders verhält es sich mit den anderen Spezialthemen, wie etwa objektorientierter Analyse/Design, UML, paralleler oder 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 auf der Party die hübschen Mädels und coolen IT-Geeks zu beeindrucken und mit nach Hause zu nehmen. Sorry.

 
Zum Seitenanfang

Mein Leben und Java, oder warum es noch ein Java-Buch gibt Zur vorigen ÜberschriftZur nächsten Überschrift

Meine ursprüngliche Beschäftigung mit Java geht über 15 Jahre zurück und hängt mit einer universitären Pflichtveranstaltung zusammen. In unserer Projektgruppe befassten wir uns 1997 mit einer objektorientierten Dialogspezifikation. Ein Zustandsautomat musste programmiert werden, und die Frage nach der Programmiersprache stand an. Da ich den Seminarteilnehmern Java vorstellen wollte, arbeitete ich einen Foliensatz für den Vortrag aus. Parallel zu den Folien erwartete der Professor eine Ausarbeitung in Form einer Seminararbeit. Die Beschäftigung mit Java machte mir Spaß und war etwas ganz anderes, als ich bis dahin gewohnt war. Vor Java kodierte ich rund zehn Jahre in Assembler, später dann mit den Hochsprachen Pascal und C, vorwiegend Compiler. Ich probierte aus, schrieb meine Erfahrungen auf und lernte dabei Java und die Bibliotheken kennen. Die Arbeit wuchs mit meinen Erfahrungen. Während der Projektgruppe sprach mich ein Kommilitone an, ob ich nicht Lust hätte, als Referent eine Java-Weiterbildung zu geben. Lust hatte ich – aber keine Unterlagen. So schrieb ich weiter, um für den Kurs Schulungsunterlagen zu haben. Als der Professor am Ende der Projektgruppe nach der Seminararbeit fragte, war die Vorform der Insel schon so umfangreich, dass die vorliegende Einleitung mehr oder weniger zur Seminararbeit wurde.

Das war 1997, und natürlich hätte ich mit dem Schreiben sofort aufhören können, nachdem ich die Seminararbeit abgegeben hatte. Doch bis heute macht mir Java immer noch viel Spaß, und ich freue mich auf jede neue Version. Und mit meinem Optimismus bin ich nicht alleine: Die Prognosen für Java stehen ungebrochen gut, weil der Einsatz von Java mittlerweile so gefestigt ist wie der von COBOL bei Banken und Versicherungen. Daher wird immer wieder davon gesprochen, Java sei das neue COBOL.

Nach über zehn Jahren sehe ich die Insel heute als ein sehr facettenreiches Java-Buch für die ambitionierten Entwickler an, die hinter die Kulissen schauen wollen. Der Detailgrad der Insel wird von keinem anderen (mir bekannten) deutsch- oder englischsprachigen Grundlagenbuch erreicht.[ 1 ] Die Erweiterung der Insel macht mir Spaß, auch wenn viele Themen kaum in einem normalen Java-Kurs angesprochen werden.

 
Zum Seitenanfang

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

Als Grundlage für dieses Buch dient die Java Platform Standard Edition (Java SE) in der Version 8 in der Implementierung von Oracle, die Java Development Kit (Oracle JDK, kurz JDK) genannt wird. Das JDK besteht im Wesentlichen aus einem Compiler und einer Laufzeitumgebung (JVM) und ist für die Plattformen Windows, Mac OS X, Linux und Solaris erhältlich. Ist das System keines der genannten, gibt es Laufzeitumgebungen von anderen Unternehmen bzw. vom Hersteller der Plattform: IBM bietet für IBM System i (ehemals iSeries) zum Beispiel eine eigene Laufzeitumgebung. Die Einrichtung dieser Exoten wird in diesem Buch nicht besprochen.

Eine grafische Entwicklungsoberfläche (IDE) ist kein Teil des 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 Oracle 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.

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 8 (was gleichbedeutend mit Versionsnummer 1.8 ist). 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 beschreibe immer die Möglichkeiten der neuesten Version, was zur Drucklegung die Java SE 8 war. Für die Didaktik der objektorientierten Programmierung ist die Versionsfrage glücklicherweise unerheblich.

Da viele Unternehmen noch mit älteren Versionen entwickeln, wirft die breite Nutzung von Features der Java-Version 8 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 8 fundamentale neue Möglichkeiten in der Programmiersprache bietet, kann ein älterer Java-Compiler natürlich nicht alles übersetzen. Um das Problem zu entschärfen und um nicht viele Beispiele im Buch ungültig zu machen, werden die Bibliotheksänderungen und Sprachneuerungen von Java 8 zwar ausführlich in den einzelnen Kapiteln beschrieben, aber die Beispielprogramme in anderen Kapiteln bleiben auf dem Sprachniveau von Java 7. So laufen mehrheitlich alle Programme unter den verbreiteten Versionen Java 7. Auch wenn die aktuellen Sprachänderungen zu einer Programmverkürzung führen, ist es unrealistisch, anzunehmen, dass jedes Unternehmen kurz nach der Herausgabe der neuen Java-Version und der 11. Auflage der Insel auf Java 8 wechselt. Es ist daher nur naheliegend, das Buch für eine breite Entwicklergemeinde auszulegen, anstatt für ein paar wenige, die sofort mit der neuesten Version arbeiten können. Erst in der nächsten Auflage, die synchron mit Java 9 folgt, werden alle Beispiele überarbeitet und wenn möglich an die neuen Sprachmittel von Java 8 angepasst.

 
Zum Seitenanfang

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

»Die Insel« eignet sich ideal zum Selbststudium. Das erste Kapitel dient dem Warmwerden und plaudert ein wenig über dieses und jenes. Wer auf dem Rechner noch keine Entwicklungsumgebung installiert hat, der 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, Compilieren 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, 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, wird an Eclipse seine Freude haben. Es wird im ersten Kapitel ebenfalls beschrieben.

In der Softwareentwicklung ist die Dokumentation der API-Schnittstellen 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 geht es 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 sind Kapitel 5 und Kapitel 6: Sie vermitteln die OO-Begriffe Klasse, Methode, Assoziation, Vererbung, dynamisches Binden. Nach Kapitel 6 ist die objektorientierte Grundausbildung abgeschlossen, und nach Kapitel 11 sind die Grundlagen von Java bekannt. Es folgen Überblicke in einzelne Bereiche der Java-Standardbibliothek, die der zweite Band vertieft.

Mit diesem Buch und einer Entwicklungsumgebung des Vertrauens lassen sich die ersten Programme entwickeln. Um eine neue Programmiersprache zu erlernen, reicht das Lesen aber nicht aus. Mit den Übungsaufgaben kann jeder Leser deshalb die eigene Fingerfertigkeit trainieren. Da viele Lösungen unter www.galileo-press.de/3606 verfügbar sind, lassen sich die eigenen Ergebnisse 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 eigene 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 (ullenboom@gmail.com) angebracht.

Die PQ4R-Methode erleichtert den Wissenserwerb. Allerdings ist es so wie mit allen gelernten Dingen: Wer Wissen nicht regelmäßig auffrischt, vergisst es. Der PQ4R-Methode sollte daher für einen langfristigen Erfolg ein zusätzlichen »R« verpasst werden: »R« für »repeat« oder »refresh«. In der Regel überliest man etwas am Anfang oder schenkt Details kaum Bedeutung. Erst später, wenn mehr Hintergrundwissen vorhanden ist, kann auch Grundlegendes im neuen Licht erscheinen und sich gut zum Gesamtbild fügen. Leser sollten sich daher immer wieder die Insel vornehmen und querblättern.

Persönliche Bemerkung

Schreiben ist eine Lernstrategie für mich. 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ß. Dieses Lernprinzip hat auch zu meinem ersten Buch über Amiga-Maschinensprachprogrammierung geführt. Doch das MC680x0-Buch kam nicht auf den Markt, denn die Verlage konnten mir nur mitteilen, dass die Zeit der Homecomputer vorbei sei.[ 2 ] Mit Java war das anders, denn hier war ich zur richtigen Zeit am richtigen Ort.

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 gibt es vom Text abgesetzte Boxen, die zum Teil spezielle und fortgeschrittene Informationen bereitstellen. Des Weiteren enden einige Überschriften auf ein *, was bedeutet, dass dieser Abschnitt übersprungen werden kann, ohne dass dem Leser etwas Wesentliches für die späteren Kapitel fehlt.

 
Zum Seitenanfang

Organisation der Kapitel Zur vorigen ÜberschriftZur nächsten Ü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, »Imperative Sprachkonzepte«. 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, denn im Mittelpunkt stehen die grundlegenden Konzepte, wie der new-Operator, Referenzen, null-Referenz, Referenz-Vergleiche. Die Bibliothek ist so reichhaltig, dass allein mit den vordefinierten Klassen und diesem Basiswissen 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 kleiner 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. Wichtige Konzepte – wie Konstruktoren, statische Eigenschaften, Aufzählungen – finden dort ihren Platz.

Objektbeziehungen, also Assoziationen zwischen Objekten, auch genannt Benutzt-Beziehungen sowie Vererbungsbeziehungen, zeigt das Kapitel 6, »Objektorientierte Beziehungsfragen«, auf. Das Kapitel führt in die »echte« objektorientierte Programmierung ein und erhellt dynamisches Binden, abstrakte Klassen und Schnittstellen (Interfaces) sowie Sichtbarkeit. Da Klassen in Java auch innerhalb anderer Klassen liegen können (innere Klassen), setzt sich ein eigenes Unterkapitel damit auseinander.

Exceptions, die wir in Kapitel 7, »Ausnahmen müssen sein«, behandeln, 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.

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.

Kapitel 9, »Besondere Typen 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.

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

Neu in Java 8 sind Lambda-Ausdrücke, die insbesondere das funktionale Programmieren vereinfachen. Wir widmen den Spracheigenschaften das Kapitel 11, »Lambda-Ausdrücke und funktionale Programmierung«, genau wie vielen Standardtypen, die bei funktionaler Programmierung auftauchen.

Danach sind die Fundamente gelegt, und die verbleibenden Kapitel dienen dazu, das bereits erworbene Wissen auszubauen. Kapitel 12, »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 dazu, nicht nur im Kleinen zu denken, sondern auch große Applikationen zu schreiben.

Nach den ersten 12 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älfte 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 nicht direkt voneinander abhängen.

Die Java-Bibliothek besteht aus mehr als 4.200 Klassen, Schnittstellen, Aufzählungen, Ausnahmen und Annotationen. Das Kapitel 13, »Die Klassenbibliothek«, (und auch der Anhang A) gibt eine Übersicht über die wichtigsten Pakete und greift einige Klassen aus der Bibliothek heraus, etwa zum Laden von Klassen. Hier sind auch Klassen zur Konfiguration von Anwendungen oder Möglichkeiten zum Ausführen externer Programme zu finden.

Die Kapitel 13 bis 19 geben einen Überblick über spezielle APIs. Die Bibliotheken sind sehr umfangreich, und das aufbauende Expertenbuch »Java SE 8 Standard-Bibliothek. Das Handbuch für Java-Entwickler« vertieft die APIs weiter. Kapitel 14 gibt eine »Einführung in die nebenläufige Programmierung«. Kapitel 15, »Einführung in Datenstrukturen und Algorithmen«, zeigt praxisnah geläufige Datenstrukturen wie Listen, Mengen und Assoziativspeicher. Einen Kessel Buntes bietet Kapitel 16, »Einführung in grafische Oberflächen«, wo es um die Swing-Bibliothek geht. Im Kern steht eine bildgeführte Anleitung, wie sich mit einer Entwicklungsumgebung einfach grafische Oberflächen entwickeln lassen. Darüber, wie aus Dateien gelesen und geschrieben wird, gibt Kapitel 17, »Einführung in Dateien und Datenströme«, einen Überblick. Wer zum Abspeichern von Daten eine relationale Datenbank nutzen möchte, der findet in Kapitel 18, »Einführung ins Datenbankmanagement mit JDBC«, Hilfestellungen. Alle genannten Kapitel geben aufgrund der Fülle nur einen Einblick, und ihre Themen werden im zweiten Band noch tiefer aufgefächert. Ein neues Thema spannt Kapitel 19 mit »Einführung in <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. Das Kapitel beginnt auf der höchsten Abstraktionsebene, beschreibt, wie XML-Daten auf Objekte übertragen werden, und geht dann weiter zur elementaren Verarbeitung der XML-Dokumente, wie sie zum Beispiel als Objekt-Baum aufgebaut und modifiziert werden.

Ein automatischer Test von Anwendungen hilft Fehler in Code aufzuspüren, insbesondere wenn später dumme Codeänderungen gemacht wurden und sich das Programm nicht mehr konform zur Spezifikation verhält. Kapitel 20, »Testen mit JUnit«, stellt die Idee der Testfälle vor und wie diese einfach und automatisch ausführbar werden. Zudem setzt das Kapitel den Schwerpunkt auf das Design von testbaren Anwendungen.

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

Abschließend liefert Kapitel 22, »Die Werkzeuge des JDK«, eine Kurzübersicht der Kommandozeilenwerkzeuge javac zum Übersetzen von Java-Programmen und java zum Starten der JVM und Ausführen der Java-Programme.

Der Anhang A, »Java SE Paketübersicht«, erklärt alle Java-Pakete kurz mit einem Satz und zudem alle Typen im absolut essenziellen Paket java.lang.

 
Zum Seitenanfang

Konventionen Zur vorigen ÜberschriftZur nächsten Überschrift

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://tutego.de/go zur tatsächlichen Quelle umgeleitet, was nachträgliche URL-Änderungen erleichtert.

  • Begriffe der Benutzeroberfläche stehen in Kapitälchen.

  • Listings, Methoden und sonstige Programmelemente sind in nichtproportionaler 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.

  • Bei Methodennamen und Konstruktoren folgt immer ein Klammerpaar, um Methoden/Konstruktoren von Attributen abgrenzen zu können. So ist bei der Schreibweise System.out und System.gc() klar, dass Ersteres ein Attribut ist und Letzteres eine Methode.

  • Hat eine Methode/ein Konstruktor einen Parameter, so steht der Typ in Klammern. Beispiele: Math.abs(double a), GregorianCalendar(int year, int month, int date). Oft wird auch der Parametername ausgelassen. Beispiel: »System.exit(int) beendet das Programm mit einem Rückgabewert«. Die Java-API-Dokumentation macht das genauso. Hat eine Methode/ein Konstruktor eine Parameterliste, ist diese aber im Text gerade nicht relevant, wird sie mit »…«, abgekürzt. Beispiel: »Die Methode System.out.print(…) konvertiert die übergebenen Argumente in Strings und gibt sie aus«. Ein leeres Klammerpaar bedeutet demnach, dass eine Methode/ein Konstruktor wirklich keine Parameterliste hat. Um die Angabe kurz und dennoch präzise zu machen, gibt es im Text teilweise Angaben wie getProperty(String key[, String def]), was eine Abkürzung für getProperty(String key) und getProperty(String key, String def) ist.

  • Um eine Gruppe von Methoden anzugeben, symbolisiert die Kennung XXX einen Platzhalter. So steht zum Beispiel printXXX(…) für die Methoden println(…), print(…) und printf(…). Aus dem Kontext geht hervor, welche Methoden gemeint sind.

  • Lange Paketnamen werden teilweise abgekürzt, sodass com.tutego.insel.game etwa zu c.t.i.g wird.

  • Um im Programmcode Compilerfehler oder Laufzeitfehler anzuzeigen, steht in der Zeile ein . 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(); // Compilerfehler: Type mismatch
  • Bei Compilerfehlern – wie im vorangehenden Punkt – kommen die Fehlermeldungen in der Regel von Eclipse. Sie sind dort anders benannt als in NetBeans bzw. dem Kommandozeilencompiler javac. Aber natürlich führen beide Compiler zu ähnlichen Fehlermeldungen.

  • Raider heißt jetzt Twix, und Sun ging Anfang 2010 an Oracle. Auch wenn es für langjährige Entwickler hart ist: Der Name »Sun« verschwindet, und der geliebte Datenbankhersteller tritt an seine Stelle. Er taucht immer nur dann auf, wenn es um eine Technologie geht, die von Sun initiiert wurde und in der Zeit auf den Markt kam, in der Sun sie verantwortete.

Programmlistings

Komplette Programmlistings sind wie folgt aufgebaut:

Listing 4.1Person.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 4.2com/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 im Internet verfügbar (http://www.galileo-press.de/3606). 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 4.3Person.java, Person

Listing 4.4Person.java, House

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

Listing 4.5Person.java, main()

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

Listing 4.6Person.java, Ausschnitt

Listing 4.7Person.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 source) 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) bzw. der Name vom Annotations- oder Aufzählungstyp. 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 RuntimeExceptions, sondern nur um geprüfte Ausnahmen. Veraltete (deprecated) Methoden sind nicht aufgeführt, lediglich, wenn es überhaupt keine Alternative gibt.

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.

 
Zum Seitenanfang

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

Ausführliche Informationen zu diesem Buch finden Sie im Internet unter der Adresse http://tutego.de/javabuch/ und http://www.galileocomputing.de/3606. Die Webseiten informieren umfassend über das Buch und über die kommenden Versionen, etwa Erscheinungsdatum oder Bestellnummer. Der Quellcode der Beispielprogramme ist entweder komplett oder mit den bedeutenden Ausschnitten im Buch abgebildet. Ein ZIP-Archiv mit allen Beispielen ist auf der Buch-Webseite erhältlich. Alle Programmteile sind frei von Rechten und können ungefragt in eigene Programme übernommen und modifiziert werden.

Wer eine Programmiersprache erlernen möchte, muss sie wie eine Fremdsprache sprechen. Begleitend gibt es eine Aufgabensammlung unter http://tutego.de/javabuch/aufgaben/. Viele Musterlösungen sind dabei. Die Seite wird in regelmäßigen Abständen mit neuen Aufgaben und Lösungen aktualisiert.

Passend zur Online-Version verschließt sich das Buch nicht den Kollaborationsmöglichkeiten des Webs 2.0. Neue Kapitel und Abschnitte des Buchs werden immer im Java-Insel-Blog http://tutego.de/blog/javainsel/ veröffentlicht. So kann jeder Leser – mehrere Monate bevor die Texte überhaupt zum Lektorat und schlussendlich ins Buch wandern – seine Meinung äußern und Kritik üben. Es gibt weltweit nur wenige Autoren, die so konsequent alle Texte ihres Buches vorveröffentlichen und bereit sind, sie in aller Öffentlichkeit zu diskutieren. Der Vorteil für die Leser zahlt sich aus: In den über zehn Insel-Jahren liegt die Anzahl fachlicher Fehler bei fast null.

Neben den reinen Buch-Aktualisierungen publiziert der Blog auch tagesaktuelle Nachrichten über die Java-Welt und Java-Tools. Google zählt den Insel-Blog weltweit zu den Top-Java-Blogs und platziert ihn seit Jahren auf Platz 1.

Facebook-Nutzer können ein Fan der Insel werden (http://www.facebook.com/pages/Javainsel/157203814292515), und Twitter-Nutzer können den Nachrichtenstrom unter http://twitter.com/javabuch abonnieren.

Der Blog zum Buch und mit tagesaktuellen Java-News

Abbildung 1Der Blog zum Buch und mit tagesaktuellen Java-News

 
Zum Seitenanfang

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

Unternehmen, die zur effektiven Weiterbildung ihrer Mitarbeiter IT-Schulungen wünschen, können einen Blick auf http://tutego.de/seminare/ werfen. tutego bietet über hundert IT-Seminare zu Java-Themen, C(++), C#/.NET, Softwaredesign, 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

  • OR-Mapping mit JPA, Hibernate, Datenbankanbindung mit JDBC

  • Java EE, EJB

  • grafische Oberflächen mit Swing und JFC, JavaFX, Eclipse RPC, SWT

  • Java und XML, JAXB

  • Android

  • Build-Management mit Maven, Hudson/Jenkins, Ant

 
Zum Seitenanfang

Danksagungen Zur vorigen ÜberschriftZur nächsten Überschrift

Ich war vielleicht 14, als mir meine Eltern mit dem C64 den Weg in die Welt der Computer öffneten. Ein Medium zum Speichern der Programme und Daten fehlte mir, und so blieb mir nichts anderes übrig, als nach dem Neustart alles wieder neu einzugeben – auf diesem Weg lernte ich das Programmieren. An meine Eltern einen großen Dank für den Computer, für die Liebe und das Vertrauen.

Dank gebührt Sun Microsystems, die 1991 mit der Entwicklung an Java begannen. Ohne Sun gäbe es kein Java, und ohne Java gäbe es auch nicht dieses Buch. Dank gehört auch der Oracle Company als Käufer von Sun, denn vielleicht wäre ohne die Übernahme Java bald am Ende gewesen.

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. Ein weiteres Dankeschön geht an verschiedene treue Leser, deren Namen aufzulisten viel Platz kosten würde; ihnen ist die Webseite http://tutego.de/javabuch/korrekteure.html 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 Entwickler, die großartige 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 Verlag Galileo Press meinen Dank für die Realisierung und die unproblematische Zusammenarbeit aussprechen. Für die Zusammenarbeit mit meiner Lektorin Judith bin ich sehr dankbar.

 
Zum Seitenanfang

Feedback Zur vorigen ÜberschriftZur nächsten Überschrift

Auch wenn wir die Kapitel noch so sorgfältig durchgegangen sind, ist es nicht auszuschließen, dass es noch Unstimmigkeiten[ 3 ] gibt; vielmehr ist es bei 1.400 Seiten wahrscheinlich, so wie auch jede Software rein statistisch Fehler aufweist. 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 ullenboom@gmail.com zu senden. Ich bin für Anregung, Lob und Tadel stets empfänglich.

In der E-Book-Version können wir 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 2014, Jahr 4 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
 Zum Katalog
Zum Katalog: Java ist auch eine Insel Java ist auch eine Insel
Jetzt bestellen

 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java SE 8 Standard-Bibliothek
Java SE 8 Standard-Bibliothek


Zum Katalog: Professionell entwickeln mit Java EE 7
Professionell entwickeln mit Java EE 7


Zum Katalog: Schrödinger programmiert Java
Schrödinger programmiert Java


Zum Katalog: Einführung in Java
Einführung in Java


Zum Katalog: Programmieren lernen mit Java
Programmieren lernen mit Java


Zum Katalog: Apps entwickeln für Android 5
Apps entwickeln für Android 5


Zum Katalog: Apps entwickeln mit Android Studio
Apps entwickeln mit Android Studio


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo

 
 


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

 
Nutzungsbestimmungen | Datenschutz | Impressum

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