Effektiv Java programmieren
Kursziele
Joshua Bloch hat mit seinem Buch ›Effective Java Programming Language Guide‹ ein Standardwerk für Java-Entwickler geschaffen. Bloch hat aus seiner Erfahrung an der Entwicklung der Java-Standard-Bibliothek – etwa der Collection-API – über 50 Programmier-Idiome abgeleitet, mit deren Hilfe Systemarchitekten klaren und korrekten Java-Code schreiben und bessere Schnittstellen entwerfen können. Das Seminar behandelt über die Java-Syntax und allgemeine Bibliotheken hinaus gehende Tipps und Tricks und vertieft in weiteren Beispielen, wie sich die Sprachmittel von Java 1.4 und Java 5 (Java 6) optimal nutzen lassen.
Zielgruppe
Software-EntwicklerEmpfohlene Dauer
3 Tage, insgesamt 18 ZeitstundenInhalte
![[LOGO]](../../images/seminare/logos/java.png)
- Einführung in Best-Practice Java
- Architektur, Design und Idiom
- Design-Patterns und Anti-Patterns
- Refactoring
- Aufspüren von Schwachstellen mit Tools
- Testen von Anwendungen - Lebenslauf der Objekte
- Design-Pattern Fabrik und Singleton
- Unbeabsichtigtes Template-Pattern
- Hängende Referenzen, Memory Leaks, Heap-Analyzer
- Finalizierung
- Starke und schwache Referenzen: Weak-, Soft- und Phantom-Referenzen - Methoden aller Objekte
-equals(),hashCode()undtoString()ausjava.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
- Aufzählungen typsicher implementieren;enumaus Java 5
- Funktionszeiger objektorientiert realisieren: Das Befehlsmuster (Command Pattern) - Methoden
- Argument-Validierungen
- Kopien anlegen
- Signaturen und das Problem der späten Änderung
- Überladene Methoden
- Varargs aus Java 5
- Das Null-Objekt-Pattern
- JavaDoc zur Dokumentation - Allgemeine Programmierhinweise
- Sichtbarkeit lokaler Variablen minimieren
- Standard-Klassenbibliotheken kennen und dazu die bunte Open Source-Welt
- Genauigkeiten beifloat,double,BigDecimal
- 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 vonError
- Ausnahmetypen bei Schichten-Architekturen
- Dokumentieren von Ausnahmen und vollständige Stack-Traces
- Zumcatch(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 SchnittstelleSerializable
- Versionierung
- Standard-Serialisierung und angepasste Serialisierung durchreadObject()/writeObject()
- Die Aufgabe vonreadResolve()
Voraussetzungen
Der Kurs ›Java für Fortgeschrittene‹ oder ›Java für Umsteiger‹ oder vergleichbare Kenntnisse.
Seminarunterlagen
Unterlagen (Kopien der Folien), Zertifikat.
Software
Als Laufzeitumgebung wird standardmäßig Java SE 6 von Sun zusammen mit der Entwicklungsumgebung Eclipse 3.4 eingesetzt (Paket ›Eclipse IDE for Java EE Developers‹). Auf Wunsch auch NetBeans 6 oder andere Entwicklungsumgebungen.
![Zu einem Bookmark-Anbieter hinzufügen [Addthis]](../../images/bookmarks/addthis.gif)
![Zu Google Bookmarks hinzufügen [Google Bookmarks]](../../images/bookmarks/google.png)
![Zu Yahoo! Bookmarks hinzufügen [Yahoo! Bookmarks]](../../images/bookmarks/yahoo.png)
![Zu Delicius hinzufügen [Delicius]](../../images/bookmarks/delicious.png)
![Zu Mister Wong hinzufügen [Mister Wong]](../../images/bookmarks/misterwong.png)