EIEIOTECHNOVATION
← Training programmes

EIEIO / PROGRAMMING & DEVELOPMENT

Optimizing Java

Course outline

3 days

Duration

3 days

About This Course

Performance tuning is an experimental science, but that doesn’t mean engineers should resort to guesswork and folklore to get the job done. Yet that’s often the case. With this practical book, intermediate to advanced Java technologists working with complex technology stacks will learn how to tune Java applications for performance using a quantitative, verifiable approach.

Most resources on performance tend to discuss the theory and internals of Java virtual machines, but this book focuses on the practicalities of performance tuning by examining a wide range of aspects. There are no simple recipes, tips and tricks, or algorithms to learn. Performance tuning is a process of defining and determining desired outcomes. And it requires diligence.

  • Learn how Java principles and technology make the best use of modern hardware and operating systems
  • Explore several performance tests and common anti-patterns that can vex your team
  • Understand the pitfalls of measuring Java performance numbers and the drawbacks of micro benchmarking
  • Dive into JVM garbage collection logging, monitoring, tuning, and tools
  • Explore JIT compilation and Java language performance techniques
  • Learn performance aspects of the Java Collections API and get an overview of Java concurrency

Required Prerequisites

  • Java SE Programming
  • Java EE Programming

Chapter 1: Optimizing and Performance Defined

  • Java Performance – The Wrong Way
  • Java Performance Overview
  • Performance as an Experimental Science
  • A Taxonomy for Performance
  • Reading Performance Graphs

Chapter 2: Overview of the JVM

  • Interpreting and Class loading
  • Executing Byetcode
  • Introducing Hotspot
  • JVM Memory Management
  • Threading and the Java Memory Model
  • Meet the JVMs
  • Monitoring and Tooling for the JVM

Chapter 3: Hardware and Operating Systems

  • Introduction to Modern Hardware
  • Memory
  • Modern Processor Features
  • Operating Systems
  • A Simple System Model
  • Basic Detection Strategies
  • Virtualization
  • The JVM and the Operating System

Chapter 4: Performance Testing Patterns and Antipatterns

  • Types of Performance Test
  • Best Practices Primer
  • Introducing Performance Antipatterns
  • Performance Antipatterns Catalogue
  • Cognitive Biases and Performance Testing

Chapter 5: Microbenchmarking and Statistics

  • Introduction to Measuring Java Performance
  • Introduction to JMH
  • Statistics for JVM Performance
  • Interpretation of Statistics

Chapter 6: Understanding Garbage Collection

  • Introducing Mark and Sweep
  • Introducing the Hotspot Runtime
  • Allocation and Lifetime
  • Garbage Collection in Hotspot
  • The Parallel Collectors
  • The Role of Allocation

Chapter 7: GC Logging, Monitoring, Tuning and Tools

  • Introduction to GC Logging
  • Log Parsing Tools
  • Basic GC Tuning
  • Tuning Parallel GC
  • Tuning CMS
  • Tuning GI
  • jHiccup

Chapter 8: Code Execution on the JVM

  • Overview of Bytecode Interpretation
  • AOT and JIT Compilation
  • HotSpot JIT Basics
  • The Code Cache
  • Simple JIT Tuning

Chapter 9: Understanding JIT Compilation

  • Introducing JITWatch
  • Introducing JIT Compilation
  • Inlining
  • Loop Unrolling
  • Escape Analysis
  • Monomorphic Dispatch
  • Intrinsic
  • On-Stack Replacement
  • Safepoints Revisited
  • Core Library Methods

Chapter 10: Java Language Performance Techniques

  • Optimizing Collections
  • Optimization Considerations for Lists
  • Optimization Considerations for Maps
  • Optimization Considerations for Sets
  • Domain Objects
  • Avoid Finalization
  • Method Handles

Chapter 11: Concurrent Performance Techniques

  • Introduction to Parallelism
  • Understanding the JMM
  • Building Concurrency Libraries
  • Summary of Concurrent Libraries
  • Executors and Task Abstraction
  • Modern Java Concurrency

Chapter 12: Profiling

  • Introduction to Profiling
  • Sampling and Safepointing Bias
  • Execution Profiling Tools for Developers
  • Modern Profilers
  • Allocation Profiling
  • Heap Dump Analysis

Chapter 13: High-Performance Logging and Messaging

  • Logging
  • Designing a Lower-Impact Logger
  • Low Latency Using Real Logic Libraries

Programme scope, delivery arrangements and suitability are confirmed during enquiry.