Java Optimierung und Performance Tuning
Java ist eine der führenden Programmiersprachen für hochperformante, kommerzielle Systeme –– erfolgreiche Beispiele wie eBay oder Google Calendar belegen das. Dennoch hält sich das Vorurteil, dass Java-Anwendungen grundsätzlich langsamer seien. Tatsächlich ist die Performance-Optimierung von Java-Systemen eine komplexe Aufgabe, die tiefgehendes Verständnis und den gezielten Einsatz von Analysetools erfordert. In diesem praxisorientierten Seminar lernen die Teilnehmer, Performance-Engpässe in Java-Anwendungen systematisch zu identifizieren und mit bewährten Strategien zu optimieren. Dabei liegt der Fokus auf der Nutzung professioneller Performance-Monitoring-Tools sowie der Anwendung effizienter Optimierungstechniken für Java-Enterprise-Anwendungen.
Inhalte des Seminars
JVM, JITs, Compiler und native Code Compiler
- Arbeitsweise einer JVM
- Interpretierende JVM
- Java Just in Time Compiler (JIT)
- Adaptive Compilierung bei HotSpot
- Tuning-Parameter einer JVM
- Bytecode-Kompression
- Java-Stack: Hardware, Betriebssystem, JVM, Java-Programme
- CRaC
Performance messen, Benchmarking, Profiling
- Unterschiede zwischen Profiling, Monitoring und Benchmarking
- Macro- und Micro-Benchmarks
- Benchmarking mit JMH
- Performance-Probleme erkennen: das Pareto-Prinzip
- CPU-, Speicher- und Thread-Analyse
- Heap-Dumps und Speicher-Monitoring
- Java Flight Recorder (JFR)
- Async Profiler
- Remote Monitoring über JMX
- JVMTI
- Analysewerkzeuge: VisualVM, JMC, Async Profiler
Klassische Compileroptimierungen
- Mathematisches
- Schleifenoptimierungen
- Invarianten
Leben und Tod: Der Werdegang der Objekte
- Lebenszyklus der Objekte
- Schwache Referenzen
- Objektpools und Cache
- Arbeitsweise von Garbage Collection, Garbage Collection Algorithmen
- Speicherlecks erkennen und vermeiden
- Generational ZGC
Java-typische Optimierungen
- Strings und Zeichenkettenoperationen
- Klassen- und Methodendesign
- Kosten von Ausnahmen
- Geladene Klassen überwachen, Klassenlader steuern
Nebenläufigkeit durch Threads
- Parallelisieren von Aufgaben
- Kosten durch Thread-Synchronisation
- Thread-Pools
- Fork/Join-Framework
- Virtual Threads
- Structured Concurrency
Utility-Klassen in der Java-Bibliothek
- Datenstrukturen und Algorithmen
- Große Ganz- und Fließkommazahlen
- Zeitberechnungen
Ein- und Ausgabe, XML und Netzwerk
- Pufferung
- Serialisierung
- New I/O (NIO)
- StaX optimal einsetzen
- Validierung von XML-Dokumenten, Caching
Performante Datenbankzugriffe über JDBC
- Datenbankanbindungen beschleunigen
- Connection-Pools
- PreparedStatements
- Isolation-Level bei Transaktionen
- Datenbank Locking: Optimistisches/Pessimistisches Locking
- Lazy Load Pattern
Enterprise Java
- Einführung in Performance-Pattern/Anti-Pattern bei Jakarta-EE-Anwendungen
- Optimierungen von mehrschichtigen Anwendungen
- Jakarta EE Caching-Strategien
- HttpSession
- Lasttests zum Aufspüren von Engpässen mit JMeter
- Verteilte Programmierung
- Java Enterprise Pattern zur Minimierung der übertragenen Datenmenge: Value Objects
- Webservices modellieren
- Optimierung des OR-Mappers
- Jakarta Messaging (ehemals Java Message Service, aka JMS)
- Applikationsserver im Produktions- und Entwicklungs-Modus
Ausblick
- Native Compilation mit GraalVM
- Performance in Cloud-Umgebungen
- Vector API
- Observability mit OpenTelemetry
Die Fakten
- Schulungsdauer: 3 Tage, insgesamt 24 Unterrichtsstunden à 45 Minuten
- Gesamtumfang: 24 Unterrichtsstunden à 45 Minuten
- Zielgruppe: Softwareentwickler
- Vorkenntnisse: Gute praktische Kenntnisse in Java und längere Projekterfahrung.
- Schulungsunterlagen: Umfassende Seminarunterlagen und Referenzdokumentation
- Softwareumgebung: Java 25 ist die verwendete LTS Standardversion. Als Entwicklungsumgebung dient standardmäßig IntelliJ IDEA. Alternativ können auch die Eclipse IDE oder Visual Studio Code verwendet werden.
Termine / Kontakt
Wir helfen Ihnen gerne bei der Anmeldung und einen passenden Termin zu finden. Kontaktieren Sie uns per E-Mail oder unter 0800/tutegos (kostenlos aus allen Netzen).
Weiterführende Seminare
Refactoring, Design Pattern (Entwurfsmuster) in Java, Effektiv Java programmieren