Buch "Java-Komponenten”

Dies ist die Web-Seite zu dem im Hanser-Verlag im März 2013 erschienenen Buch "Java-Komponenten" (ISBN 978-3-446-43176-8).

Alle Beispielprogramme befinden sich in einer einzigen ZIP-Datei. Die ZIP-Datei enthält für jedes Kapitel einen eigenen Ordner (Kapitel01 bis Kapitel16; es gibt allerdings keinen Ordner Kapitel07, da das 7. Kapitel keinen Beispielcode enthält). Für die Kapitel über Eclipse, EJB und Android (Kapitel10, Kapitel13 und Kapitel16) sind jeweils die kompletten Eclipse-Projekte in der ZIP-Datei enthalten. Für die restlichen Kapitel finden Sie dagegen nur die Java-Dateien in der ZIP-Datei (Ausnahme: für OSGi werden neben dem Quellcode auch noch die XML-Dateien mitgeliefert).

Fehler und Korrekturen

Nachträglich entdeckte Fehler mitsamt ihren Richtigstellungen.
  • S. 29, zweitletzter grauer Kasten mit Codebeispielen:
    gc.setContent(new C()); //Syntaxfehler
    Korrektur:
    gc.setContent(new C());
    (Jan Übernickel, 11. März 2013)
  • S. 31, zweitletzter grauer Kasten mit Codebeispielen:
    class MyException<T> extends Exception {} //Snytaxfehler
    Korrektur:
    class MyException<T> extends Exception {} //Syntaxfehler
    (Thorsten Diehl, 10. September 2013)
  • S. 81 (in Listing 4.3):
    Deklaration der Methode invoke in Klasse MyInvocationHandler:
    Ergänzung:
    throws Throwable
    (Rainer Oechsle, 18. April 2013)
  • S. 82 (in Listing 4.3) und S. 86 (in Listing 4.5), jeweils in catch(Throwable t):
    return null;
    Verbesserung:
    throw t;
    Erläuterung:
    Es ist schöner, eine geworfene Ausnahme nicht zu "verschlucken", sondern nach der Protokollierung diese Ausnahme an den Aufrufer zurückzugeben.
    (Rainer Oechsle, 18. April 2013)
  • S. 103, 5. Zeile:
    werden
    Korrektur:
    worden
    (Jochen Asal, 14. März 2013)
  • S. 105, erster Absatz, drittletzte Zeile:
    dass ein etwas länger dauernde Aktion
    Korrektur:
    dass eine etwas länger dauernde Aktion
    (Stephan Kamphausen, 29. Dezember 2013)
  • S. 105, letzte Zeile:
    Objekt an- und ihrer Stop-Methode wieder abmelden
    Korrektur:
    Objekt an- und in ihrer Stop-Methode wieder abmelden
    (Stephan Kamphausen, 29. Dezember 2013)
  • S. 113, erster Spiegelpunkt:
    eine
    Korrektur:
    ein
    (Jochen Asal, 14. März 2013)
  • S. 119, in Bild 6.6:
    HelloService- bzw. HelloClient-Komponente
    Korrektur:
    CounterService- bzw. CounterClient-Komponente
    (Frank Thesen, 2. November 2013)
  • S. 126, 12. Zeile von unten:
    vorgesehene
    Korrektur:
    vorgesehenen
    (Jochen Asal, 14. März 2013)
  • S. 128, 9. Zeile:
    die eine Komponenten nutzen kann
    Korrektur:
    die eine Komponente nutzen kann
    (Stephan Kamphausen, 29. Dezember 2013)
  • S. 131, 2. Absatz, 12. Zeile:
    Dieser ist zwar eher schwach
    Korrektur:
    Dieser ist allerdings eher schwach
    (Stephan Kamphausen, 29. Dezember 2013)
  • S. 132, 2. Absatz, viertletzte Zeile:
    Standardeingabe eins Prozesses
    Korrektur:
    Standardeingabe eines Prozesses
    (Stephan Kamphausen, 29. Dezember 2013)
  • S. 136, 7. Zeile:
    eine
     Referenztyp
    Korrektur:
    ein Referenztyp
    (Jochen Asal, 14. März 2013)
  • S. 136, 1. Absatz, zweitletzte Zeile:
    Objekte
     Referenzen hält
    Korrektur:
    Objekt Referenzen hält
    (Stephan Kamphausen, 29. Dezember 2013)
  • S. 137, 8./9. Zeile:
    Quellenobjekt
    Korrektur:
    Quellobjekt
    (Stephan Kamphausen, 29. Dezember 2013)
  • S. 142, 6. Zeile:
    Eine
    Korrektur:
    Ein
    (Jochen Asal, 14. März 2013)
  • S. 151, Listing 9.5:
    vor der drittletzten Zeile fehlt } (Ende des ersten if)
    Korrektur:
    Zeile mit } einfügen
    (Thorsten Diehl, 10. September 2013)
  • S. 158, innerhalb von Listing 9.7, Methode stop:
    erst Aufruf von stopClient, danach von removeServiceListener
    Korrektur:
    Reihenfolge tauschen (d.h. zuerst Aufruf von removeServiceListener, danach von stopClient), da es sonst passieren könnte, dass Thread nach dem Beenden erneut gestartet wird
    (Frank Thesen, 17. Januar 2014)
  • S. 158, innerhalb von Listing 9.7, Methode stopClient:
    private void stopClient(boolean uncoditionally)
    Korrektur:
    private void stopClient(boolean unconditionally)
    entsprechende Anpassung bei der Nutzung dieses Parameters im ersten if
    (Jochen Asal, 14. März 2013)
  • S. 187, nach Listing 11.1:
    Ergänzung:
    Es könnte erwähnt werden, dass die Klasse Counter nach MVC eine kombinierte Model-View-Klasse ist.
    (Thorsten Diehl, 10. September 2013)
  • S. 188, nach Listing 11.2:
    wer MVC kennt, sieht, dass es sich bei MainClass1 um eine kombinierte View-Controller Klasse handelt
    Korrektur:
    wer MVC kennt, sieht, dass MainClass1 u.a. den Controller darstellt
    (Thorsten Diehl, 10. September 2013)
  • S. 188, 2. Absatz:
    Das Tag <applet> muss zwingend die Attribute class, width und height haben.
    Korrektur:
    Das Tag <applet> muss zwingend die Attribute code, width und height haben.
    (Frank Thesen, 29. November 2013)
  • S. 189, 1. Zeile:
    Im
    Korrektur:
    In
    (Jochen Asal, 14. März 2013)
  • S. 198, 2. Zeile:
    das durch HTML beschreiben wird
    Korrektur:
    das durch HTML beschrieben wird
    (Frank Thesen, 29. November 2013)
  • S. 239, letzter Satz zu E3:
    SessioContext
    Korrektur:
    SessionContext
    (Thorsten Diehl, 10. September 2013)
  • S. 261, nach Listing 15.1:
    Ferner existiert ein zweite Klasse
    Korrektur:
    Ferner existiert eine zweite Klasse
    (Stephan Kamphausen, 29. Dezember 2013)
  • S. 267, Abschnitt 15.5, 1. Absatz, 5. Zeile:
    durch das Vorhandenseins
    Korrektur:

    durch das Vorhandensein
    (Stephan Kamphausen, 29. Dezember 2013)
  • S. 294, Abschnitt 16.9.1, letzter Satz:
    Die Entwicklungsumgebung für Android erzeugt aus der AIDL-Datei automatisch Code in Form einer Klasse mit demselben Namen und in demselben Package wie die AIDL-Schnittstelle, in unserem Fall also die Klasse Counter in dem in Listing 16.8 angegebenen Package.
    Korrektur:
    Die Entwicklungsumgebung für Android erzeugt aus der AIDL-Datei automatisch Code in Form einer Schnittstelle mit demselben Namen und in demselben Package wie die AIDL-Schnittstelle, in unserem Fall also die Schnittstelle Counter in dem in Listing 16.8 angegebenen Package.
    (Rainer Oechsle, 12. Mai 2013)
  • S. 294, Abschnitt 16.9.2, erster Satz:
    Zur Implementierung einer AIDL-Schnittstelle muss man eine Klasse aus der inneren Klasse Stub der automatisch erzeugten Klasse ableiten (in unserem Fall also aus Counter.Stub).
    Korrektur:
    Zur Implementierung einer AIDL-Schnittstelle muss man eine Klasse aus der inneren Klasse Stub der automatisch erzeugten Schnittstelle ableiten (in unserem Fall also aus Counter.Stub).
    (Rainer Oechsle, 12. Mai 2013)
  • S. 301, dritter Absatz, zweiter Satz:
    Wie zuvor für Counter wird zur Callback-Schnittstelle automatisch eine Java-Klasse namens Callback erzeugt.
    Korrektur:
    Wie zuvor für Counter wird zur AIDL-Callback-Schnittstelle automatisch eine Java-Callback-Schnittstelle erzeugt.
    (Rainer Oechsle, 12. Mai 2013)