Buch "Parallele und verteilte Anwendungen in Java" (5. Auflage)

Dies ist die Web-Seite zu dem im Hanser-Verlag erschienenen Buch "Parallele und verteilte Anwendungen in Java" (ISBN 978-3-446-45118-6), abgekürzt PUVA.

Beispielprogramme

Die Beispielprogramme sind in Packages zusammengefasst. Die Package-Namen sollten selbsterklärend sein. Sie beziehen sich zum einen auf das Buchkapitel, zum anderen auf den inhaltlichen Aspekt (z.B. chapter5.udp: alle Beispiele zur Socket-Programmierung mit UDP aus Kapitel 5). Für die Kapitel 2 bis 6 enthalten die betreffenden Verzeichnisse direkt die Java-Dateien. Für Kapitel 7 befinden sich im Verzeichnis chapter7 die kompletten EclipseEE-Projekte (u.a. auch mit HTML-Dateien).

Detaillierte Angaben über die Struktur und dem Inhalt der ZIP-Datei.
Verzeichnis bzw. Ordner Inhalt
chapter2 Java-Dateien zu Kapitel 2 (alle in Package chapter2)
chapter3 Java-Dateien zu Kapitel 3 (alle in Package chapter3)
chapter4/basics Java-Dateien zu den Abschnitten 4.1, 4.2, 4.3 und 4.5 (alle in Package chapter4.basics)
chapter4/mvp Java-Dateien zu Abschnitt 4.4 (alle in Package chapter4.mvp)
chapter5/udp Java-Dateien zu den Abschnitten 5.3 und 5.4 (alle in Package chapter5.udp)
chapter5/tcp Java-Dateien zu den Abschnitten 5.5 und 5.6 (alle in Package chapter5.tcp)
chapter6/counter Java-Dateien zu Abschnitt 6.2 (alle in Package chapter6.counter)
chapter6/sleep Java-Dateien zu Abschnitt 6.3 (alle in Package chapter6.sleep)
chapter6/list Java-Dateien zu Abschnitt 6.4 (alle in Package chapter6.ist)
chapter6/chat Java-Dateien zu Abschnitt 6.5 (alle in Package chapter6.chat)
chapter6/semaphore Java-Dateien zu Abschnitt 6.6 (alle in Package chapter6.semaphore)
chapter6/migration Java-Dateien zu Abschnitt 6.7 (alle in Package chapter6.migration)
chapter7/ServletsJSF EclipseEE-Projekt mit Servlet- und JSF-Beispielen zu den Abschnitten 7.2 bis 7.8
chapter7/Restful EclipseEE-Projekt mit Beispiel zu Abschnitt 7.9 (Server-Seite)
chapter7/RestfulClient EclipseEE-Projekt mit Beispiel zu Abschnitt 7.9 (Client-Seite)
chapter7/WebSockets EclipseEE-Projekt mit Beispiel zu Abschnitt 7.10

Fehler und Korrekturen

Nachträglich entdeckte Fehler mitsamt ihren Richtigstellungen.
  • S. 12, Inhaltsverzeichnis, 5.3:
    Kommunikation über UDPmit Java-Sockets
    Verbesserungsvorschlag:
    Leerzeichen nach "UDP" einfügen: Kommunikation über UDP mit Java-Sockets
    (Gunnar Sperveslage, 26. Februar 2020)
  • S. 32-34, Listing 2.6 und nachfolgender Text:
    im Programmcode werden Überweisungen zwischen -500 und +499 € vorgenommen, aber im Text auf S. 34 wird ein Beispiel mit einer Überweisung von 1000 € gegeben
    Verbesserungsvorschlag:
    Programmcode und beschreibender Text sollten konsistent zueinander sein.
    (Yanik Kaypinger, 12. April 2018)
  • S. 41, nach erstem grauen Kasten:
    "Wenn ein Thread die Methode ms1 auf ein Objekt o1 aufruft ..."
    Verbesserungsvorschlag:
    "Wenn ein Thread die Methode ms1 auf ein Objekt o1 der Klasse C aufruft ..."
    (Andreas Daum, 13. April 2018)
  • S. 117, letzter Satz des dritten Abschnitts:
    "Ist er negativ oder null, sowird ..."
    Korrektur:
    "Ist er negativ oder null, so wird ..."
    (Gunnar Sperveslage, 29. Oktober 2019)
  • S. 138, Zeile 10 nach grauem Kasten:
    "... Philosphen ..."
    Korrektur:
    "... Philosophen ..."
    (Robin Grell, 30. August 2019)
  • S. 140, Abschnitt 3.5, Zeile 8:
    "... der Klasse PhilosopherWithSemaphoresMutex in Listing 3.11 ..."
    Korrektur:
    "... der Klasse PhilosopherWithMutexSemaphore in Listing 3.11 ..."
    (Andreas Daum, 13. April 2018)
  • S. 157, nach Listing, Zeile 2:
    "... (s. Listing 3.14) ..."
    Korrektur:
    "... (s. Listing 2.14) ..."
    (Andreas Daum, 13. April 2018)
  • S. 179, direkt nach Listing:
    "Wenn man in dem Programm von Listing 3.26 ähnliche Augaben ..."
    Korrektur:
    "Wenn man in dem Programm von Listing 3.26 ähnliche Ausgaben ..."
    (Andreas Daum, 13. April 2018)
  • S. 179, nach Listing, Zeile 4:
    "... durch den Paralleitätsgrad ..."
    Korrektur:
    "... durch den Parallelitätsgrad ..."
    (Andreas Daum, 13. April 2018)
  • S. 183, erste Zeile nach letztem grauen Kasten:
    "... Stream-Schnisttellen ..."
    Korrektur:
    "... Stream-Schnittstellen ..."
    (Robin Grell, 30. August 2019)
  • S. 191, vor Listing 3.30, 5 Zeilen davor:
    Referenz auf Bild 3.2 fett gedruckt: ab dieser Stelle sind solche Referenzen manchmal fett, manchmal nicht
    Korrektur:
    einheitliche Darstellung solcher Referenzen
    (Andreas Daum, 13. April 2018)
  • S. 195, in Listing 3.32:
    account = new Account[100];
    Verbesserungsvorschlag:
    Nutzung einer Konstante für 100
    (Andreas Daum, 13. April 2018)
  • S. 196, in Listing 3.32:
    int fromAccountNumber = (int)(Math.random()*100);
    int toAccountNumber = (int)(Math.random()*100);
    Verbesserungsvorschlag:
    Im Text könnte man darauf eingehen, dass der Fall, dass beide Kontonummern gleich sind, nicht abgefangen werden muss, denn zum einen bleibt auch beim vorhandenen Code der Kontostand dieses einen Kontos gleich, zum anderen gibt es auch keine Probleme durch den geschachtelten Synchronized-Block für dasselbe Objekt, da Synchronized-Sperren "reentrant" sind.
    (Andreas Daum, 13. April 2018)
  • S. 210, Ende des ersten Abschnitts:
    "... Toolki t)."
    Korrektur:
    "... Toolkit)."
    (Gunnar Sperveslage, 29. Oktober 2019)
  • S. 210, Zeile 8 in 4.1.1:
    "... allle ..."
    Korrektur:
    "... alle ..."
    (Robin Grell, 30. August 2019)
  • S. 210, Zeile 17 in 4.1.1:
    "... einen zentralen Bereich haben, in denen sich mehrere Elemente ..."
    Korrektur:
    "... einen zentralen Bereich haben, in dem sich mehrere Elemente ..."
    (Robin Grell, 30. August 2019)
  • S. 214, in Listing 4.2:
    actor.setOnAction(()->System.out.println("Sein oder ..."));
    Verbesserungsvorschlag:
    actor.setOnAction(()->System.out.println("Sein oder Nichtsein ..."));
    (Andreas Daum, 13. April 2018)
  • S. 214, nach Listing 4.2, Zeile 6:
    "Damit könenn wir ..."
    Korrektur:
    "Damit können wir ..."
    (Marc Kutscher, 3. Mai 2021)
  • S. 214, nach Listing 4.2, Zeile 7:
    "... JavaX-Beispiel ..."
    Korrektur:
    "... JavaFX-Beispiel ..."
    (Andreas Daum, 13. April 2018)
  • S. 236, Listing 4.7:
    "private void fillVocab() throws Exeption"
    Korrektur:
    "private void fillVocab()"
    (Thomas Zehrer, 20. Juli 2020)
  • S. 240, letzter Satz des ersten Absatzes nach grauem Kasten:
    "Andernfalls wird die nächste Vokabel angezeigt verbunden mit einer entsprechenden Nachricht."
    Korrektur:
    "Andernfalls wird die nächste Vokabel angezeigt, verbunden mit einer entsprechenden Nachricht."
    (Robin Grell, 30. August 2019)
  • S. 246, Zeile 8:
    "... die Erzeugung eines Stage-Objekts. was wir zu Beginn ..."
    Korrektur:
    "... die Erzeugung eines Stage-Objekts, was wir zu Beginn ..."
    (Rainer Oechsle, 29. April 2018)
  • S. 247, Programmcode unten:
    erste Methode increment nicht eingerückt
    Korrektur:
    Methode einrücken
    (Rainer Oechsle, 3. August 2019)
  • S. 248, Programmcode oben:
    letzte geschweifte Klammer zu viel
    Korrektur:
    Klammer streichen
    (Fabian Gibert, 10. Juni 2019)
  • S. 249-253, Abschnitt 4.5.3:
    Thread-Klasse in Listing 4.11 heißt TickerThread, im Text wird die Klasse als Ticker bezeichnet
    Korrektur:
    Klassennamen in Listing oder Text ändern
    (Fabian Gibert, 10. Juni 2019)
  • S. 267, erster Spiegelpunkt nach Bild 5.2, Zeile 8:
    "... zusammenfassen Die Schichten ..."
    Korrektur:
    "... zusammenfassen. Die Schichten ..."
    (Gunnar Sperveslage, 29. Oktober 2019)
  • S. 279, 281, 283, 285, jeweils Kopfzeile:
    "Kommunikation über UDPmit Java-Sockets"
    Korrektur:
    "Kommunikation über UDP mit Java-Sockets"
    (Frank Seeger, 24. Februar 2021)
  • S. 281, letzter Absatz, letzte Zeile:
    "... Ausnahme werfen. Dann wird erst ..."
    Korrektur:
    "... Ausnahme werfen, dann wird erst ..."
    (Gunnar Sperveslage, 29. Oktober 2019)
  • S. 283, letzter Absatz, letzten beiden Zeilen:
    "... gestartet werden: das erste Argument ..."
    Korrektur:
    "... gestartet werden: Das erste Argument ..."
    (Gunnar Sperveslage, 29. Oktober 2019)
  • S. 287, zweiter Absatz nach Listing 5.4, Zeile 9:
    "... darauf anwendbar sind.Damit können ..."
    Korrektur:
    "... darauf anwendbar sind. Damit können ..."
    (Gunnar Sperveslage, 29. Oktober 2019)
  • S. 297, 4. Zeile von unten im Text oberhalb von Listing 5.8:
    "... des inneren Try-with-resources-Block, ..."
    Korrektur:
    "... des inneren Try-with-resources-Blocks, ..."
    (Gunnar Sperveslage, 26. Februar 2020)
  • S. 327, Zeile 1:
    "... lauch ..."
    Korrektur:
    "... launch ..."
    (Gunnar Sperveslage, 29. Oktober 2019)
  • S. 328, Zeile 7:
    "... dann wird es häufiger kommen ..."
    Korrektur:
    "... dann wird es häufiger vorkommen ..."
    (Robin Grell, 30. August 2019)
  • S. 350, Bild 6.10:
    Im Bild wird getName zuerst auf Client2 und dann auf Client1 angewendet.
    Korrektur:
    Wenn man davon ausgeht, dass Client1 vor Client2 beigetreten ist, dann sollte getName zuerst auf Client1 und dann auf Client2 angewendet werden. Die Anwenung von getName zuerst auf Client3 ist korrekt, da der Name des gerade beitretenden Clients zuerst erfragt wird.
    (Daniel Aggintus, 9. November 2018)
  • S. 351, Bild 6.11:
    Die Aufrufe von print erfolgen in der Reihenfolge Client3, Client2 und Client1.
    Korrektur:
    Wenn man davon ausgeht, dass die Clients in der Reihenfolge Client1, Client2, Client3 beigetreten sind, dann sollten die Aufrufe von print auch in dieser Reihenfolge erfolgen.
    (Daniel Aggintus, 9. November 2018)
  • S. 354, Listing 6.26, drittletzte Zeile:
    Anführungszeichen fehlt am Ende:
    System.out.println("Ende durch Eingabe von 'ende');
    Korrektur:
    Anführungszeichen hinzufügen:
    System.out.println("Ende durch Eingabe von 'ende'");
    (Fabian Gibert, 30. Juni 2019)
  • S. 362, 5. Zeile von oben:
    "... (s. Bild 3.1 links)."
    Korrektur:
    1 nicht fett: "... (s. Bild 3.1 links)."
    (Gunnar Sperveslage, 26. Februar 2020)
  • S. 382, Abschnitt 6.11 (Zusammenfassung), Zeile 7:
    "... spielt dabei das MVC-Entwurfsmuster."
    Korrektur:
    "... spielt dabei das MVP-Entwurfsmuster."
    (Rainer Oechsle, 19. Mai 2018)
  • S. 385, Beginn des letzten Absatzes:
    "Solche einfache HTML-Seiten ..."
    Korrektur:
    "Solche einfachen HTML-Seiten ..."
    (Gunnar Sperveslage, 29. Oktober 2019)
  • S. 387, ganz oben:
    "Ein "echte" HTTP-Anfrage ..."
    Korrektur:
    "Eine "echte" HTTP-Anfrage ..."
    (Frank Seeger, 30. Dezember 2020)
  • S. 389, ganz oben:
    "Eine weiteres Eingabeelement ..."
    Korrektur:
    "Ein weiteres Eingabeelement ..."
    (Frank Seeger, 30. Dezember 2020)
  • S. 391, Beginn des ersten Absatzes von 7.2.1:
    "Wie schon in der Einleitung bschrieben ..."
    Korrektur:
    "Wie schon in der Einleitung beschrieben ..."
    (Gunnar Sperveslage, 29. Oktober 2019)
  • S. 401, Listing 7.5:
    message = "Der Z&auml;hler wurde auf " + value + " erh&ouml;t.<p>";
    Korrektur:
    message = "<p>Der Z&auml;hler wurde auf " + value + " erh&ouml;t.</p>";
    (Marc Kutscher, 17. Juli 2021)
  • S. 402, Listing 7.5:
    message = "Der Z&auml;hler wurde auf " + value + " zur&uuml;ckgesetzt.<p>";
    Korrektur:
    message = "<p>Der Z&auml;hler wurde auf " + value + " zur&uuml;ckgesetzt.</p>";
    (Marc Kutscher, 17. Juli 2021)
  • S. 439, Zeile 7:
    "Ein weitere mögliche Angabe ..."
    Korrektur:
    "Eine weitere mögliche Angabe ..."
    (Robin Grell, 30. August 2019)
  • S. 443, grauer Kasten mit Programmocode, erste Codezeile:
    Faces Context c = FacesContext.getCurrentInstance();
    Korrektur:
    Faces Context context = FacesContext.getCurrentInstance();
    (Fabian Gibert, 28. Februar 2021)
  • S. 458, Listing 7.24, Kommentar in Klasse Counter:
    //Methoden incremenr, reset und get ...
    Korrektur:
    //Methoden increment, reset und get ...
    (Daniel Aggintus, 9. November 2018)
  • S. 470, Index, Eintrag Skeleton:
    "Skeleton 377f., ,"
    Korrektur:
    "Skeleton 316, 377f."
    (Gunnar Sperveslage, 26. Februar 2020)
  • Rückseite des Buchs:
    "MVC-Entwurfsmuster"
    Korrektur:
    "MVP-Entwurfsmuster"
    (Timo Vollmert, 21. Januar 2021)
back-to-top nach oben