Who should attend
Software-Ingenieure, Internet-/Intranet-Entwickler, projekterfahrene Anwendungsentwickler.
Prerequisites
Java Erweiterungen II - Vertiefung (JAVA-ERW-2) oder vergleichbare Kenntnisse.
Course Objectives
Dieses Seminar wendet sich an erfahrene Java-Programmierer, die hier Anregungen zum Performance-Tuning und zur Speicheroptimierung für Java-Anwendungen erhalten. Neben den elementaren Regeln zur Optimierung werden zur Vertiefung Beispiele aus der Praxis vorgestellt, an denen die Machbarkeit der präsentierten Lösungsvorschläge aufgezeigt wird
Course Content
Vorgehensweise:
- Zielsetzung bei der Optimierung
 - Identifizierung von Performanceproblemen
 - Optimierungsdreieck
 - Der Optimierungszyklus
 
Werkzeuge und Hilfsmittel:
- Profiler
 - Speicher- und System-Monitoring
 - Decompiler
 - Last- und Performancetests
 - Remotezugriff
 
Laufzeitumgebung:
- Arbeitsweise von JVM, JIT, HotSpot
 - Funktionsweise der Garbage Collection
 
Optimierung von Programmen und effiziente Programmiertechnik:
- Klassische Optimierungen (Schleifen, Invarianten)
 - Arrays
 - Lebenszyklus und Wiederverwendung von Objekten
 - Schwache Referenzen
 - Caches und Objekt-Pool
 - Objektbeziehungen und Klassendesign
 - Multithreading und Threadsynchronisation, Thread Pool - Zeichenkettenverarbeitung
 - JDBC
 - riskante Optimierungen
 
Effizienter Einsatz der Klassenbibliotheken:
- Datenstrukturen
 - Klassen der Collection-API (Listen, Queues, Mengen, Assoziativspeicher)
 - Alternative Collection-Bibliotheken
 - Ein-/Ausgabe, NIO
 - Serialisierung, XML-Serialisierung
 - Alternative Serialisierungsbibliotheken
 
Verteilte Anwendungen und Datenbanken:
- Value Objects
 - Datenbanken: Connection Pools, Prepared Statements, Connection Parameter
 - Transaktionen: Isolation Level und parallele Transaktionen
 - Typische Optimierungsmassnahmen im Applikationsserver: Servlets und Enterprise JavaBeans
 - verteilte Caches
 - Performance Patterns und Antipatterns