Java ist (auch|mehr als) eine Insel

Hier klicken und online lesen!

Aus einer Begleitunterlage meiner Java-Seminare sind in den letzten Jahren zwei Java-Bücher entstanden:

  • Der erste Band ›Java ist auch eine Insel‹ (ISBN 978-3-8362-1802-3) gibt einen fundierten Einstieg in die Sprache und liefert einen Übersicht über die Java SE-Bibliotheken.
  • Den Fokus auf die Bibliotheken liefert der 2. Band, ›Java 7 – Mehr als eine Insel. Das Handbuch zu den Java SE Bibliotheken‹ (ISBN 978-3-8362-1507-7). Das Buch enthält ebenfalls eine Zusammenfassung der Neuerungen aus Java 7.

Seit Ende 2011 ist die 10. Auflage vom 1. Band im Handel erhältlich und die 1. Auflage vom 2. Band. Die nächste Version ist Mitte 2013 mit einem Update auf Java 8 geplant.

Der Weblog [RSS] informiert regelmäßig über Neuigkeiten und Buch-Updates. Die 11. Auflage ist in Arbeit und integriert Sprach- und Bibliotheksänderungen aus Java 8, wie etwa Lambda-Ausdrücke.

AmazonWenn Ihnen das Buch gefällt, wäre ich über eine nette Bewertung bei Amazon dankbar. Oder werde Fan auf Facebook! Oder wie wäre es als Dankeschön eine Installation von DropBox? Das schenkt mir ein paar MiB.

Philosophie der beiden Bände

Die Insel (Band 1) richtet sich an Interessenten, die das Prinzip der imperativen (gerne auch der objektorientierten) Programmierung kennen, aber noch nicht in Java programmiert haben. Wer Java als erste Programmiersprache lernt und vorher noch nie programmiert hat, wird mit dem Buch vielleicht nicht glücklich werden. Die Insel ist kein klassisches Einführungsbuch in die Informatik und Programmierung im Allgemeinen und beschreibt nicht, was Software ist und wie ein Rechner funktioniert. Es handelt sich ebenfalls nicht um ein typisches Uni-Lehrbuch, das auf theoretische Dinge wie Turingmaschinen oder Entscheidbarkeit eingeht. Es ist für ›Industrieprogrammierer‹ geschrieben, die mit Java wirklich arbeiten wollen. (Also ist das Buch nicht nur für diejenigen, die beim Brennball in der Schule immer als Letztes gewählt wurden.) Zwar finden sich auch für Informatiker immer wieder einige theoretische Blöcke, aber sie stehen in der Insel nicht im Vordergrund. Wer das erwartet, sollte besser einen Blick auf die Java Language Specification werfen. Mir ist es wichtig, nicht die APIs abzuschreiben und zu übersetzen, sondern ich versuche auf die Implementierung zu schauen und die Philosophie der Sprache zu vermitteln. So erfährt der Leser auch etwas über Design-Patterns, Optimierung und praktische objektorientierte Programmierung. Regelmäßig nehme ich Tipps und Tricks aus Java-FAQs und Code-Books in die Insel auf, um wirklich das abzudecken, was ein echter Entwickler im Alltag benötigt.

Der erste Band ist der „Sprachband“ (imperative Konzepte, OOP, Pattern, Generics) plus einen Teil Einführung in die Bibliotheken. Der 2. Band behandelt immer die Sprachneuerungen der jeweiligen Version (aktuell Java 7) aber sonst ausschließlich die Java SE-Bibliotheken.

Der fortgeschrittene Entwickler muss sich den 1. Band nicht mehr kaufen, denn alles steht für ihn im 2. Band, auch die Einführung in Java 7. Den 1. Band braucht man nur als Java-Einsteiger.

Herdt und Galileo-Computing

Der Herdt-Verlag veröffentlicht auf der Basis der Insel Schulungsmaterialien mit ausgewählten Kapiteln der Insel:

Die Vergangenheit

Ende 2001 wurde die 1. Auflage der Insel veröffentlicht. Seit dem gibt es weniger einmal im Jahr ein Update, welches auch immer die neuen Java-Versionen beschreibt. 2011 wurde der monolithische Wälzer in zwei Bände zerlegt. Die Aufspaltung ist nötig geworden, da die Anzahl der Themen immer größer wurde und natürlich in der Zukunft weiterhin zunehmen wird. Vorher mussten wegen der Fülle immer wieder Abschnitte und ganze Kapitel entfernt werden. Die Insel ist nie als "immer-1400-Seiten-Buch" gedacht gewesen, sondern als Buch, was die Java-Landschaft sehr detailliert abbildet. Wenn man ein Buch mit 2000 Seiten fertigen könnte, wäre das natürlich eine bessere Lösung. Bei einem Band zu bleiben, und immer wieder Kapitel oder Abschnitte zu entfernen, war keine dauerhafte Lösung.

Anstatt sich als fortgeschrittener Entwickler immer die alte dicke Insel mit einer Einführung in Schleifen etc. zu kaufen, bei der 600 Seiten eben bekannt sind, bekommt man nun mit dem 2. Band immer jeweils die Sprachänderungen und sehr detailliert alle Java SE-Bibliotheken. In der 1. Auflage ist der Anteil der Libs schon deutlicher knapper (auch wenn man das auf den ersten Blick nicht sieht) und er wird in Zukunft immer weiter schrumpfen. Mit Lambda-Ausdrücken und einen Einstieg in funktionaler Programmierung gehen von den Libs wieder einige Seiten weg.

Die aktuellen Auflagen sind Ende 2011 im Handel und natürlich ist Band 1 online und auch Band 2.

Auflage Band 1 Auflage Band 2 Geschichte
11 2 Ist in Arbeit. Die Ausgabe ist zusammen mit Neuerungen in Java 8 Mitte 2013 zu erwarten. Eine Vorschau auf die Java 8-Eigenschaften und Kapitel gibt es im Blog. Alle Code-Beispiele basieren konsequent auf Java 7 bzw. Java 8 bei den neuen Features.
10 1 Aktuelle Auflage von Ende 2011. Das erste Mal gibt es Band 1 (die Sprache) und Band 2 (die Bibliotheken). Die Bände beschreiben auf Java 7.
9 Release 2010. Updates, Kapitelverschiebungen und bereitet auf Java 7 vor.
8 Die Auflage aus Januar 2009 enthält in erster Linie Korrekturen und ein paar neue Grafiken. Weiterhin neue Abschnitte zu regulären Ausdrücken und der JAXB-API.
7 Veröffentlichung im November 2007. In erster Linie Korrekturen und eine Kapitelverschiebung.
6 Nach dem Sun Java 6 (JDK 6) im Dezember 2006 veröffentlicht hat, gibt es auch eine neue Version der Insel mit vielen Neuerungen wie Web-Services, JavaScript-API, Tray, Splash-Screen, RowSorter, File-Erweiterungen, Compiler API, SwingWorker, Console.
5 Im September 2005 fertig gestellt. Die Beispiele wurden noch mehr auf Java 5 ausgelegt und Abschnitte erweitert und durch neue APIs umsortiert.
4 Die vierte Auflage kam Ende 2004 und basierte weitestgehend auf Java 5.
3.2 Die dritte Auflage wurde um neue Beispiele erweitert und fand Anfang 2004 den Weg in die Regale. Die ISBN-Nummer blieb die gleiche. Die OOP-Beispiele wurden von Socken auf Diskotheken/Kirchen umgestellt.
3 Die 3. Auflage im Hardcover mit neuem Seitenformat ist Juni 2003 in den Handel gekommen.
2 Im September 2002 gab es die zweite Auflage und 1.000 zusätzlich gedruckte Ausgaben einer Studentenversion waren schnell vergriffen.
1 Im Dezember 2001 wurde die Insel nach dreijähriger Arbeit mit mehr als 1.300 Seiten von Galileo Computing veröffentlicht.

Die Zukunft

Sowohl die Online- als auch die Printversion des Java-Buchs sind stets in Überarbeitung, um sie parallel zu den Neuerungen der Programmiersprache und den Tools weiter zu entwickeln. Trotz Aufspaltung in zwei Bände ist die Insel immer noch zu dick für spezielle Abschnitte, was zur Auslagerung einigen Passagen führte.

Wie geht's besser?

Da so ein Buch eine dynamische Sache ist, erhoffe ich von meinen Lesern, Vorschläge, wie man das Tutorial noch besser gestalten kann. Ich bin immer auf der Suche nach Inhalten, die für die nächsten Auflagen aufgenommen werden sollen. Jeder Leser kann helfen, das Buch zu verbessern:

  • Korrekturvorschläge bei Rechtschreibfehlern oder Satzfehlern geben. (Wenn man einen Satz schon zweimal lesen muss ist das ein Zeichen für unklaren Stil.)
  • Hinweise auf unsaubere Beschreibungen. (Ein Begriff ist schwammig erklärt oder Zusammenhänge sind unklar.)
  • Didaktisches Fehlkonzept aufzeigen. (Etwas wird genutzt, aber später erst erklärt.)

Leider kommen immer wieder Fehler in den Text hinein. Das liegt seltener an dem Fall, dass ich kein Deutsch kann — na ja, vielleicht auch das —, sondern viel mehr daran, dass ich schnell schreibe und mich eher auf Inhalt als auf Wörter konzentriere. Wenn der Fehler nicht gerade durch die automatische Rechtschreibkorrektur erkannt wird und beim zweiten Lesen mir nicht auffällt, und auch nicht dem Lektorat, ist die Wahrscheinlichkeit für einen Fehler in der Endversion groß. Zu meinen Lieblingen gehört dabei ein Vertauschen von wir und wie. Die Hinweise empfange ich gerne per E-Mail.

 Den Stoff zu sequenzieren ist eine große Herausforderung. Tausende Konzepte müssen in Reihe gelegt werden. Datenstrukturen werden schon kurz vorgestellt bei 1:n-Assoziationen, aber Schnittstellen mogeln sich da sein rein, werden aber erst später wirklich eingeführt. Es gibt noch mehr solcher Stellen. Kapitel 4 etwa bei den Zeichenketten greift auf Ausnahmen vor und IO-Klassen, das Exception-Kapitel ebenfalls auf IO. Bei inneren Klassen sehe ich kein Vorgriff. In jeder Auflage der Insel schiebe ich Kapitel hin und her, und für die kommende Version wird auch das String-Kapitel gespalten, sodass Fortgeschrittenes in Band 2 geht. Das Problem ist aber fast unlösbar, weil es immer rekursive Abhängigkeiten gibt. Erklärt man Wrapper-Klassen zuerst, referenziert das Comparable, erklärt man Comparable/Comparator braucht man Wrapper. Man dreht sich im Kreis. Falls ich Konzepte nutze, aber noch nicht einmal einen Verweis lege, bitte melden.

Leser, die einen Fehler in der HTML-Version finden, können mir leicht weiterhelfen. Markiere einfach die Zeile/Satz mit dem Fehler und kopiere ihn in euer Lieblings-Mailprogramm. Vielleicht markiert Ihr das Wort oder den Fehler noch fett (HTML-Mails sind kein Problem), damit es schneller geht, also etwa so:

Relativen Angaben werden häufig

Den Rechtschreibfehler im oberen Satz, also die Endung bei Relativen, finde ich dann selbst. Seitenzahlen oder Kapitelangaben sind unwichtig, da ich über den Text suche. Durch eingefügte Bausteine verschiebt sich der Text sowieso.

Wenn die Satzstruktur oder der Inhalt verbesserungswürdig sind, dann schickt mir doch einfach einen Vorschlag. Sendet mir einfach eine E-Mail mit Hinweisen oder nutzt die Kommentarfunktion bei Galileo. Über Verbesserungsvorschläge und Anmerkungen freue ich mich immer.

Java Insel im Format PDF oder ePub?

Inseln auf dem StapelBisher hat der Verlag die Insel weder im PDF- noch ePub-Format im Angebot. (Wer im Internet nach "Java ist auch eine Insel pdf" sucht wird entweder auf das freie Vorschau-Kapitel stoßen oder auf eine sehr alte Version, die den Vorläufer der jetzigen Insel darstellt. Die Version ist über 10 Jahre alt und logischerweise veraltet.) Wer die Insel gerne im ePub-Format konsumieren möchte, kann das Buch ganz normal herunterladen und dann mit (freien) Tools in das ePub-Format konvertieren.

BibTeX Format Band 1

@book {insel,
   author       = "Christian Ullenboom",
   title        = "Java ist auch eine Insel",
   publisher    = "Galileo Computing",
   edition      = "Tenth",
   year         = 2012,
   isbn         = "978-3-8362-1802-3",
   url          = "http://openbook.galileocomputing.de/javainsel/"
}

Errata

Eine Errata, die Fehler in der Insel auflistet, gibt es nicht. Das hat praktische Gründe. Einer ist, dass es nicht so viele Fehlermeldungen gibt. Ich riskiere einfach, dass zwei Personen den gleichen Fehler angeben. Das Melden von Fehlern ist über das Webformular bei Galileo so einfach, dass sich der Aufwand nicht lohnt. Dann beginne ich sofort die Arbeit an der neuen Auflage, sobald ich die Dokumente nach dem Druck zurück bekomme. Durch diese Änderungen verschwinden immer wieder Abschnitte komplett, werden verschoben oder umgeschrieben.