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

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

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. 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. 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. 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. 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 7:
    "... JavaX-Beispiel ..."
    Korrektur:
    "... JavaFX-Beispiel ..."
    (Andreas Daum, 13. April 2018)
  • 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. 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. 382, Abschnitt 3.11 (Zusammenfassung), Zeile 7:
    "... spielt dabei das MVC-Entwurfsmuster."
    Korrektur:
    "... spielt dabei das MVP-Entwurfsmuster."
    (Rainer Oechsle, 19. Mai 2018)
  • 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)