Effective Java

Code Dauer Preis netto Prämie
J 216 3 Tage 1.450,00 € 15 Punkte

Preis inkl. 19% MwSt. 1.725,50 €

Termine DG  
KW 38 22. - 24.09.2010 - anmelden
KW 48 01. - 03.12.2010 - anmelden

DG = Dieser Termin hat eine Durchführungs-Garantie.

Auch wenn Java als modern konzipierte Sprache und insbesondere das Objektmodell von Java bewusst einfach gehalten wurde, um unnötige Komplikationen - wie sie z.B. einen C++-Entwickler immer wieder plagen - in der Programmierung zu vermeiden, ist es dennoch alles andere als selbstverständlich, mit Java klaren, korrekten, robusten und wiederverwendbaren Code zu schreiben. Dazu genügt es nicht, die Java-Syntax und -Technologien zu kennen, vielmehr muss man wissen, wie man Java richtig "spricht". Es geht um Java-spezifische Muster (Idiome). Zum Beispiel ergeben sich etliche Schwierigkeiten aus dem Java-Ansatz zur Generizität, bei dem alle Klassen implizit von der Superklasse Object abgeleitet sind. Typische Objektverwaltungsmethoden wie clone() oder equals() sind im Design bereits in Object angelegt, wodurch Annahmen in Vaterklassen bzgl. möglicher Kindklassen impliziert werden (Inversion der Spezialisierungsrichtung). Da alle Objekte vom Typ Object sind, ist nicht gewährleistet, dass Typprüfungen dem Compiler überlassen werden können.
Solche und ähnliche Fragen werden in dem Kurs mittels Diskussionen erschlossen. Komplexere Lösungsansätze werden beispielhaft an Fallstudien demonstriert und bedarfsweise implementiert.

Anmerkung:
Sie können die Übungen dieser Schulung mit einem OpenSource-Tool wie eclipse oder NetBeans ausführen. Da Java im Mittelpunkt der Schulung steht, wird nicht vertiefend auf die zahlreichen Möglichkeiten der Entwicklungsumgebungen eingegangen. Das Tool soll Ihnen lediglich den Umgang mit der JSE erleichtern.

Inhalt

  • Objektfabriken, Fabrikmethoden, statische Methoden und private Konstruktoren
  • Clean-Up-Idiom, Bemerkungen zu finalize()
  • Statische Methoden vs. Instanzmethoden, Sichtbarkeitsbetrachtungen
  • Anforderungen an equals()
  • Vertragsabhängigkeiten, z.B. equals() und hashCode()
  • Überladen vs. Überschreiben vs. Verstecken von Methoden und Instanzvariablen
  • Formulierung von Kontrakten (Zusicherungen)
  • Bewusster Umgang mit Referenzdatentypen
  • Objektduplikation
  • Immutable Objects
  • Sticker- und Marker-Interfaces, Interfaces und Vererbung
  • Aggregation vs. Vererbung
  • Typendefinition, Schnittstelle vs. Implementierung
  • Typensicherheit, Ausblick auf Java-Generics, generische Programmierung mit instanceof und getClass
  • Programmierung auf eine Schnittstelle
  • Anonyme Klassen, statische und nicht-statische Member-Klassen
  • enum - ein Ersatz für das Typesafe-enum Pattern?
  • Exception-Handling oder wie die Sprachdesigner Klassen mit Objekten verwechselten
  • Hinweise zum Exception-Handling, Implikationen auf Klassen- und Bibliotheksdesign
  • Funktionszeiger in Java, Funktionsobjekte, Command-Pattern
  • Pluggable Behaviour mittels Reflection, Interfaces vs. Reflection
  • Idiome in den Java-Klassenbibliotheken, Vergleich mit der STL (C++), Entkopplungsrezepte
  • Performanz - einige Larman-Idiome
  • Profiling
  • Nebenläufigkeit und Implikationen für ein Bibliotheksdesign, Wrapper-Klassen (Dekorierer)
  • Überlegungen zum Package-Konzept, Strukturierung von Applikationen
  • Testen - Unit Tests, White-Box-Tests, Organisation des Testcodes
  • Sicherheit, Serialisierung, Proxies
  • Styleguide, Namensguide, Documentationguide
  • Typische Stolperfallen
  • Allgemeines zu Patterns und Refactoring

Zielgruppe

Softwareentwickler, Designer

Voraussetzung

Teilnahme an Java für Fortgeschittene oder vergleichbare Kenntnisse unbedingt erforderlich

Dauer

3 Tage

Teilnehmer

4 bis 10 Personen