Angelika Langer - Training & Consulting
HOME | COURSES | TALKS | ARTICLES | GENERICS | LAMBDAS | IOSTREAMS | ABOUT | CONTACT | Twitter | Lanyrd | Linkedin
Course Curriculum Angelika LangerCourse Curriculum Angelika Langer  
HOME

  GENERAL INFO
  SCHEDULE
  REGISTRATION
  
  JAVA
    EFFECTIVE JAVA
    CONCURRENCY
    PERFORMANCE
    LAMBDAS
    JAVA AFTER EIGHT
    MODULE SYSTEM
    GC TUNING
    MEMORY MODEL 
    JAVA INTRO

  C++
    RELIABLE C++
    EFFECTIVE STL
    TEMPLATES
    IOSTREAMS
    C++ INTRO   
 

GENERICS 
LAMBDAS 
IOSTREAMS 
ABOUT 
CONTACT 
HighPerformanceJava

HighPerformanceJava
COURSE DESCRIPTION

This course aims to explain best practice programming techniques for high-performance Java programs and practices performance profiling and analysis including appropriate tuning techniques.

Application performance is a crucial issue in every software development project - regardless of the technology and language being used.  In order to build a high-performance software system programmers and software engineers must have in-depth knowledge of the technology and language specific performance issues. 

This seminar is for Java programmers specifically and explores strategies for improving the performance of Java programs. 

The focus is on core Java - the language itself and its platform libraries (JDK).  The seminar talks about those areas of Java that are relevant for all Java developers regardless of their respective project context.  Specific architectures, such as databases, communication frameworks, web or application servers, etc. are not considered, because there are too many of them and they are highly context specific. 

Attendants study programming techniques for efficient use of the Java language and its runtime environment, with emphasis on the implementation of high-performance software. Benchmarking and profiling techniques are explained and practiced in hands-on labs. The goal is to enable attendants to identify and analyze performance bottlenecks in a Java application and then apply appropriate tuning techniques to remove the performance impediment. 

IMPLEMENTATION (or: Do the right thing)

Naturally, this seminar will not solve all your performance problems. 
Rather than trying to cover the broad range of  all conceivable performance issues, this course has a strong and narrow focus: core Java -  the language itself and its platform libraries (JDK). This may sound petty, but software developers make hundreds of design and implementation decisions every day. They eventually sum up and add to the overall performance characteristics of the application as a whole. 

Here is where the course aims to help improving the performance: attendants learn to habitually apply  programming techniques that improve performance and help avoiding the pitfalls that impair performance. 

PERFORMANCE PROFILING AND TUNING (or: When you think you're done)

The programming techniques discussed and practiced in this course are also relevant for performance profiling and tuning.  Often, the last phase of an implementation effort is a profiling and tuning phase where programmers try to verify that the application meets its performance requirements.  If not, performance bottlenecks must be identify, analyzed, and removed. 

A major part of this seminar is devoted to exactly this phase of a project.  Profiling will be practiced in hands-on sessions, including an explanation of how profiling tools work, what can be expected of them, how they are utilized and how the resulting data is best interpreted and analyzed. 

Once a bottleneck is found all the programming tips and techniques discussed in the course kick in: they can be used to remove or at least mitigate the performance penalty. 
 

Prerequisite Courses 
and Skills:
Sound knowledge of Java. 
(1-2 years of practical experience). 
Duration: 4 days

This is a course for professional Java software developers with an interest in  high-performance Java software.  It is best attended after a couple of years of on-the-job Java experience. 

It is a hands-on course for practicing programmers, which means that the focus is on programming and tuning, not on high-level design and testing. Practicing programmers will get the most out of this seminar.  It is a seminar on programming for performance, performance profiling and analysis, and performance tuning. 
 
 

OBJECTIVES
Understand programming techniques that improve performance
Know how to avoid the pitfalls that impair performance 
Learn how to profile and tune an application effectively
Know how to identify and analyze performance bottlenecks

The course is designed by Klaus Kreft & Angelika Langer and backed by years of experience in teaching and more than a decade of practical experience in industrial software development both in C++ and Java.
Angelika Langer is a freelance trainer/consultant in the area of software development in C++ and Java, author of language reference material such as the Java Generics FAQs [ ], the Lambdas/Streams Tutorial & Reference  [ ], and countless articles on C++ and Java topics [ ]. 
Klaus Kreft is a senior consultant for more than 25 years and has served as the lead architect and performance expert on several successful industry projects. He has been working in Java since its advent in 1995. 
Both are recognized speakers at OO and Java conferences and author of numerous articles on C++ and Java topics in various computer magazines worldwide. Together they write a column for the German Java magazine JavaMagazin  [ ] and are authors of the  books "Standard C++ IOStreams and Locales" (2000) [ ] and "Java Core Programmierung" (2011) [ ], the Online FAQ on Java Generics [ ], and the Lambdas/Streams Tutorial & Reference  [ ].


 

COURSE OVERVIEW

PERFORMANCE CONCEPTS 
  • What Is Performance? 
  • Performance and the Development Process
PROGRAMMING
  • Programming and Performance 
  • Elementary Issues
  • Data Structures
  • I/O
BENCHMARKING
  • Performance Measuring
  • Benchmark Pitfalls
  • JIT Compilation
  • A Modicum of Statistics
  • JMH - Java Microbenchmarking Harness
APPLICATION PROFILING & TUNING
  • Tool Architecture
  • Commercial & Non-Commercial Profilers
  • Profiling Strategies and Tactics 
  • Performance Hot Spots 
  • Memory Allocation Hot Spots 
MEMORY LEAK DETECTION
  • Memory Leaks 
  • Live Detection Strategies 
  • Post-Mortem Detection (via MAT)
GARBAGE COLLECTION TUNING (HOTSPOT JVM)
  • Classic Garbage Collection Algorithms
  • Garbage First Collector (G1)
  • Pauseless Garbage Collection (ZGC & Shenandoah)
  • GC Profiling
  • Throughput Tuning 
  • Pause Tuning 
  • G1 Tuning
MONITORING
  • Management Beans
  • Monitoring Tools (jconsole, jvisualvm, jmc, jfr)
     
FURTHER READING

To get an impression of some topics covered in this course check out the sample reading: 
EFFECTIVE JAVA
Column in JavaMagazin
(available in German only)
 
THE ART OF GARBAGE COLLECTION TUNING
Conference Slides and Video
(in English)
 

 
 
TRAINING LOCATIONS

Open Enrollment
Public courses are conducted in collaboration with partner companies worldwide. Presentation language is English or German, depending on the location. For further information go to GENERAL INFO.
On-Site Training
Courses can be held at your company site. Duration and content will be tailored to your specific needs and prerequisites. Presentation language is English or German.  For further information go to GENERAL INFO.
For information regarding training locations and the current schedule of public courses go to SCHEDULE. For further information or enrollment send me EMAIL or use the REGISTRATION form.
Schedule
To check for availability, price and other details send me EMAIL or use the REGISTRATION form.
  © Copyright 1995-2021 by Angelika Langer.  All Rights Reserved.    URL: < http://www.AngelikaLanger.com/Courses/HighPerformanceJava.htm  last update: 4 Nov 2021