HomeLinks zum Seminar Effektiv Java programmieren

Links zum Seminar Effektiv Java programmieren

Einführung in Best-Practice Java

Lebenslauf der Objekte

Allgemeines zu Methoden und Methoden aller Objekte

  • Argument-Validierungen
  • Kopien anlegen
  • Signaturen und das Problem der späten Änderung
  • Überladene Methoden
  • Variable Argumentlisten (Varargs)
  • Das Null-Objekt-Pattern
  • Javadoc zur Dokumentation
  • equals(), hashCode() und toString() aus java.lang.Object
  • clone und Copy-Konstruktor
  • Comparable/Comparator

Klassen und Schnittstellen

  • Die Sichtbarkeit im Griff haben
  • Immutable Klassen
  • Kaufen statt Erben
  • Vererbung bewusst steuern oder unbewusst vermeiden
  • Schnittstellen oder abstrakte Klassen?
  • Markierungsschnittstellen (Marker-Interfaces)
  • Innere Klassen, statische Mitgliedsklassen
  • Funktionszeiger objektorientiert realisieren: Das Befehlsmuster (Command Pattern)

Aufzählungen typsicher implementieren

Allgemeine Programmierhinweise

  • Sichtbarkeit lokaler Variablen minimieren
  • Standard-Klassenbibliotheken kennen und dazu die bunte Open Source-Welt
  • Genauigkeiten bei float, double, BigDecimal
  • Probleme vom Autoboxing vermeiden
  • Strings und ihre Laufzeiteigenschaften
  • Schnittstellenorientierte Programmierung
  • Spezielle Reflection-Szenarien durch Schnittstellen abbilden
  • Namenskonventionen
  • Das Problem der nativen Methoden
  • Optimierung, Performance-Messungen (Profiling), Tools

Ausnahmen (Exceptions)

  • Ausnahmen oder Rückgabewerte?
  • Wann geprüfte und ungeprüfte Ausnahmen?
  • Die Exception-Hierarchie der Standard-Bibliotheken kennen und nutzen
  • Der Einsatz von Error
  • Ausnahmetypen bei Schichten-Architekturen
  • Dokumentieren von Ausnahmen und vollständige Stack-Traces
  • Zum catch(Exception e) {}
  • Assertions
  • Zusicherungen mit Annotationen (JSR 308: Annotations on Java Types), @NotNull

Nebenläufigkeit mit Threads

  • Was synchronisiert werden muss
  • Nebenläufigkeit nicht behindern
  • wait/await in Schleifen
  • Der Thread-Scheduler und Thread-Prioritäten
  • Nebenläufigkeit dokumentieren
  • Thread-Gruppen

Serialisation

  • Die Schnittstelle Serializable
  • Versionierung
  • Standard-Serialisierung und angepasste Serialisierung durch readObject/writeObject
  • Die Aufgabe von readResolve
  • Serialization Proxies

Generics

  • Wiederholung zentraler Konzepte
  • Generische Typen, Raw-Types, unchecked-Meldungen
  • Listen mit Generics statt Arrays ohne Generics
  • Bounded Wildcards
  • Typsichere heterogene Container