Einleitung
Die Programmiersprache Java liegt mittlerweile in der achten Version vor und hat nach einigen stürmischen Anfangsjahren nun einen hohen Grad an Stabilität, Performanz und Funktionalität erreicht. Es ist daher auch nicht verwunderlich, dass Java mittlerweile neben – oder sollte man sagen vor – C++ und C# die wichtigste Programmiersprache für Neuentwicklungen von kommerziellen Softwareprodukten ist und sich auch im Hochschulbereich sowie in der Abteilung Hobby und Freizeit großer Beliebtheit erfreut. Und der Trend setzt sich fort: Google hat Java als Programmiersprache für seine Android-Apps (für Smartphones mit Android-Betriebssystem) auserwählt und Java damit einen weiteren riesigen Boom beschert (Grund genug für uns, einen eigenen App-Teil in das Buch aufzunehmen.)
An wen sich dieses Buch richtet
Vor diesem Hintergrund versteht sich das vorliegende Buch als ein Lehr- und Standardwerk zur Programmierung mit Java, das sich vornehmlich an Studenten und engagierte Einsteiger wendet, sich aber auch sehr gut für fortgeschrittene Leser und Umsteiger von anderen Sprachen eignet.
Studenten – oder ganz allgemein Einsteiger, die die Java-Programmierung zwar mit Spaß, aber auch mit einer gewissen Ernsthaftigkeit betreiben möchten – werden neben den umfassenden und klar verständlichen Ausführungen vor allem die vielen Erläuterungen und Hintergrundinformationen, die Einblicke in Alltag und Methodik des Programmierens und die Einführungen in die speziellen Programmiergebiete (inklusive Android) schätzen.
Umsteiger und fortgeschrittene Leser können sich mit dem Buch weiterbilden und es (auch mithilfe des ausführlichen Index) als zuverlässiges Nachschlagewerk nutzen.
Vorkenntnisse werden keine vorausgesetzt. Für Leser, die noch über keinerlei Programmierkenntnisse verfügen, gibt es im ersten Teil eine Schnelleinführung in die wichtigsten Programmierkonzepte, verknüpft mit einem Rückblick auf die Entwicklung der modernen Programmiersprachen.
Neuerungen in Java 8
Die neueste Version der Sprache, Java 8, hat vor allem viele interne Verbesserungen und Bugfixes gebracht. Daneben gab es aber auch einige größere und kleinere Erweiterungen der Sprache und der angebotenen Bibliotheken, von denen wir folgende in das Buch aufgenommen haben:
Tabelle 0-1: Behandelte Neuerungen von Java 8
Neuerungen in der Sprache | Beschrieben in Kapitel |
Neuerungen in den Java-Bibliotheken | Beschrieben in Kapitel |
Aufbau dieses Buchs
Das vorliegende Buch ist in mehrere Teile gegliedert, von denen sich die ersten vier vornehmlich auf die reine Java-Syntax konzentrieren, während sich die nachfolgenden Teile mit den Java-Bibliotheken, diversen weiterführenden Programmierthemen sowie der Praxis des Programmierens beschäftigen.
Teil I ist Ihr Einstieg in die Programmierung im Allgemeinen und Java im Besonderen. Wer möchte, kann sich in Kapitel 1 ein wenig über die Entstehung und Geschichte von Java informieren. In Kapitel 2 geht es dann noch weiter zurück, und wir vollziehen im Schnelldurchgang die Entwicklungen nach, die zu den modernen Programmiersprachen Java, C++ und C# geführt haben. Das Hauptaugenmerk gilt dabei allerdings weniger der Historie als vielmehr den grundlegenden Programmierkonzepten, daher ist dieses Kapitel für diejenigen Leser, die noch über keinerlei Programmiererfahrung verfügen, ein absolutes Muss. In Kapitel 3 lernen Sie dann die Programmierwerkzeuge des Java-SDK kennen und erstellen Ihr erstes eigenes Programm. In Kapitel 4 stellen wir Ihnen vorab die in Java üblichen Stilkonventionen vor.
Teil II befasst sich mit grundlegenden Sprachelementen, die man heute in fast allen strukturierten Programmiersprachen wiederfindet: von den Variablen bis zu den Kontrollstrukturen.
In Teil III befassen wir uns erstmals ernsthafter mit der objektorientierten Programmierung, d. h., wir werden Objekte nicht mehr nur verwenden, sondern untersuchen, wie man eigene Klassen zur Erzeugung von Objekten schreibt. Daneben stellen wir Ihnen in Kapitel 12 noch zwei weitere grundlegende Datentypen vor, Arrays und Aufzählungen, die in Java eng mit dem Java-Konzept verknüpft sind, und schließen mit Kapitel 13 die Grundlagen ab.
Teil IV ist den weiterführenden Konzepten der objektorientierten Programmierung gewidmet: Vererbung, Polymorphie, Schnittstellen (Interfaces), Exceptions und weiterführenden Aspekten der Programmierung mit Objekten.
Teil V nimmt Sie mit auf einen Streifzug durch die wichtigsten Utility-Klassen der Java-Bibliothek. Hier werden neben Datum, Zeit, Systemumgebung usw. auch so wichtige Themen wie Strings, Collections sowie Ein- und Ausgabe ausführlich behandelt. Darüber hinaus gibt es noch ein Kapitel zur funktionalen Programmierung mittels Lambda-Ausdrücken (Kapitel 25) und der Verwendung von Annotationen (Kapitel 26).
Teil VI behandelt die Erstellung von Anwendungen mit grafischen Benutzeroberflächen (GUI). Neben den reinen Grundlagen werden hier auch weiterführende Aspekte wie das Drucken, Drag & Drop, Grafik sowie die Verwendung von JTree und JTable angesprochen.
Teil VII behandelt weiterführende Programmiergebiete – etwa wie Sie von einem Java-Programm aus auf eine Datenbank zugreifen (Kapitel 38), wie Sie Programmcode mittels Threads parallel ausführen (Kapitel 39) oder wie Sie Webseitentext laden (Kapitel 40). Besonders interessant für Studenten dürfte auch Kapitel 41 sein, das sich etwas ausführlicher mit der Praxis und Methodik des Programmierens beschäftigt.
Teil VIII ist denjenigen Lesern gewidmet, die ihre Java-Kenntnisse auch zur Entwicklung von Android-Apps nutzen möchten.
Ergänzt wird das Buch durch umfangreiche Anhänge, die Sie sich von der Website zum Buch (siehe Hinweis weiter unten) herunterladen können.
Allgemeine Konzeption
Bücher, die sich um eine möglichst vollständige Darstellung der Java-Syntax und der Java-Bibliotheken bemühen, haben üblicherweise mit dem Problem zu kämpfen, dass sie als Lehrbücher oder gar zum Selbststudium meist nur sehr bedingt geeignet sind. Umgekehrt behandeln einführende Programmierlehrbücher meist nur einen Bruchteil der Möglichkeiten, die Java und seine Standardbibliothek bieten.
Wir erheben keineswegs den Anspruch auf Lösung dieses Dilemmas, hoffen aber, ein vernünftiges Konzept gefunden zu haben, das dem Leser beides bieten kann: ein verständliches Lehrbuch und ein gutes Nachschlagewerk.
So werden Sie in diesem Buch kaum Stellen finden, an denen Syntaxelemente oder Klassen vorgestellt werden, ohne dass nicht auch etwas über die Bedeutung oder die sinnvolle Verwendung dieser Elemente gesagt wird. Zudem nehmen wir uns immer wieder Zeit, Hintergründe zu erläutern, praktische Beispiele an die Hand zu geben oder den Blick vom Detail auf das übergeordnete Ganze zu richten. Übungen und Workshops helfen, das Gelernte zu vertiefen und praktische Erfahrungen zu sammeln, und in Teil VII gibt es dann noch ein eigenes Kapitel zur Praxis des Programmierens.
Dafür mussten wir uns bei der Vorstellung der weiterführenden Programmierthemen auf einige herausragende Gebiete konzentrieren – was uns allerdings nicht als großes Manko erscheint, da Leser, die ein Niveau erreicht haben, auf dem diese Informationen für sie interessant werden, meist gut dazu in der Lage sind, sich über die sehr ausführliche und hilfreiche Java-API-Dokumentation bzw. die entsprechende Fachliteratur und diverse Internetforen informieren zu können. Neben einer kurzen Einführung in die HTTP-Programmierung haben wir uns daher auf die Datenbankprogrammierung (einen Klassiker), die Android-Programmierung (eines der am stärksten boomenden Anwendungsgebiete) und die Thread-Programmierung (weil unabdingbar für viele professionelle Anwendungen und wichtig auch für viele Android-Apps) konzentriert.
Verwendung als Lehrbuch
Wenn Sie noch über keinerlei Programmiererfahrung verfügen, lesen Sie unbedingt zuerst die Einführung für Programmieranfänger (Kapitel 2). Ansonsten können Sie je nach Wissensstand auch mit Kapitel 3 oder 4 ff. beginnen. (Sie können aber natürlich trotzdem einen Blick in Kapitel 2 werfen; es dürfte wegen seines historischen Rückblicks auch für den einen oder anderen Leser mit Vorkenntnissen interessant sein.)
In den ersten Teilen, die sich mit der Java-Syntax befassen, gibt es am Ende jeden Kapitels einen Übungsteil. Versuchen Sie nicht, dem Drang nachzugeben, diese Übungen nur grob zu überfliegen oder ganz zu übergehen. Die Übungen sind in der Regel gut machbar,1 da wir sie weniger als...