In diesem Seminar geht es um Programmiertechniken für performance-optimierte Anwendungen und um Performance-Profiling und -Analyse inklusiver entsprechender Tuning-Techniken.
Performance ist in praktisch jedem Projekt und jeder Anwendung von Bedeutung – ganz unabhängig von der eingesetzten Technologie oder der benutzten Programmiersprache. Um hochperformante Softwaresysteme bauen zu können, benötigen Entwickler:innen fundiertes Wissen über die Performance-Eigenschaften der von Ihnen eingesetzten Technologie und Programmiersprache.
Dieses Seminar richtet sich an Java-Programmierer:innen und konzentriert sich auf die in Java-relevanten Performance-Themen.
Der Schwerpunkt ist Core Java – die Programmiersprache selbst, die Klassen des JDK sowie die JVM. Die besprochenen Themen sind relevant für jede/n Java-Entwickler:in, unabhängig von ihrem/seinem jeweiligen Projekt-Kontext. Spezifische Architekturen, wie bestimmte Datenbanksysteme, Communication Frameworks, Web- oder Application-Server, etc. betrachten wir in diesem Kurs nicht, weil Techniken zur Performance-Optimierung in diesen Bereichen jeweils abhängig von den Spezifika der eingesetzten Produkte sind. Stattdessen konzentrieren wir uns auf den Kern von Java, der für jeden Java-Entwickler von Interesse ist. Bereits in der alltäglichen Programmierpraxis lassen sich Performance-Fallen vermeiden und gezielt Performance-Optimierungen durchführen.
Die Seminarteilnehmenden erlernen Programmiertechniken für die effiziente Nutzung von Java und seinem Laufzeitsystem mit dem Ziel, performance-optimale Anwendungen zu entwickeln. Es werden Benchmarking- und Profiling-Techniken erläutert und geübt, um die Teilnehmenden in die Lage zu versetzen, Performance-Engpässe zu identifizieren und mit passenden Tuning-Maßnahmen zu beseitigen. Dabei wird auch der Einfluss der virtuellen Maschine auf die Performance der Anwendung berücksichtigt. Ein Teil des Seminars widmet sich der JVM (von Sun/Oracle), wie sie funktioniert, welchen Einfluss sie auf die Performance hat, wie man ein JVM-Profiling und -Tuning macht.
Ihre Trainerin
Angelika Langer arbeitet als unabhängige Trainerin mit eigenem Kursprogramm basierend auf ca. 25 Jahren Erfahrung in der Softwareentwicklung, u.a. in C++ und Java. Sie ist Autorin zahlreicher Fachveröffentlichungen zum Thema Java und C++, darunter die Kolumne „Effective Java“ im JavaMagazin, das Online Java Generics FAQ, sowie das Buch „Standard C++ IOStreams“. Sie ist Referentin auf internationalen Fachkonferenzen im In- und Ausland. Aktuell liegt ihr Hauptinteresse im Training, Coaching und Mentoring im Bereich der objektorientierten Softwareentwicklung mit C++ und Java.
Inhalt
Performance Grundlagen
- Was ist Performance? – Performance-Konzepte
- Performance im Entwicklungsprozess
Performance-Überlegungen in der Entwicklungsphase
Programmierung
- Elementares
- Datenstrukturen / Collections
- I/O
Micro-Benchmarking
- Performance-Messungen
- Typische Fehler beim Benchmarking
- JIT Compilation
- Statistik
- JMH – Java Microbenchmarking Harness
Performance-Analyse und Tuning
Profiling der Anwendung
- Werkzeuge und ihre Architektur
- Strategien fürs Profiling
- Performance-Engpässe
- Speicherallokations-Engpässe
Auffinden von Memory Leaks
- Typische Memory Leaks
- Live-Analyse
- Post-Mortem Analyse (via MAT)
Garbage Collection Tuning
- Klassische Garbage-Collection-Algorithmen
- Garbage First (G1) Collector
- Pausenlose Garbage Collectoren (ZGC & Shenandoah)
- Werkzeuge und Techniken fürs GC Profiling
- Tuning zwecks Durchsatzmaximierung
- Tuning zwecks Pausenminimierung
- G1-Tuning
Voraussetzungen
Mehrjährige Erfahrung in der profesionellen Java-Programmierung.
Bitte beachten Sie, dass die Kursunterlagen in englischer Sprache sind.