Java Advanced II: High Performance Java

Java Advanced II: High Performance Java

Learn how to improve the performance of Java applications.

Duration
40 hours
Course type
Online
Language
English
Duration
40 hours
Location
Online
Language
English
Code
JVA-076
Training for 7-8 or more people? Customize trainings for your specific needs
Java Advanced II: High Performance Java
Duration
40 hours
Location
Online
Language
English
Code
JVA-076
€ 850 *
Training for 7-8 or more people? Customize trainings for your specific needs

Description

During this training we’ll cover various approaches to profiling, finding bottlenecks, tuning a virtual machine, setting JVM flags, serialization and caching libraries. We’ll also look at off-heap data storage, benchmarking, memory monitoring and tuning and a host of other topics.

certificate
After completing the course, a certificate
is issued on the Luxoft Training form

Objectives

  • An introduction to the modern approaches of improving Java applications performance

Target Audience

  • Java developers
  • Java architects

Prerequisites

Good knowledge of Java

Roadmap

Module 1: Performance tuning overview [6h]

  • Common practices
  • Tuning strategies
  • Performance metrics (latency, throughput, bandwidth)
  • How to improve performance
  • Tools for performance measurement
  • JMeter
  • Writing load tests with JMeter
  • How to improve database performance
  • How to improve performance via architecture: streams, queues, microservices, clouds
  • Common best practices for improving code performance [Homework 3h]

Module 2: GC algorithms [6h]

  • Usage of memory by Java objects
  • Common approaches and algorithms of garbage collectors
  • Serial GC garbage collector
  • Parallel GC garbage collector
  • CMS garbage collector
  • G1 garbage collector
  • Shenandoah garbage collector
  • Garbage collectors tuning
  • Instruments to gather metrics of garbage collection
  • How to select the optimal garbage collector

Module 3: HotSpot JIT compiler [5h]

  • JIT compilation
  • Java byte code
  • Tiered compilation
  • Code cache and tuning
  • Code optimizations
  • Code deoptimization (and when it happens)
  • JITWatch instrument to analyze compiling results
  • Types of optimization
  • Speculative optimizations
  • Compiler tuning
  • AOT compilation
  • GraalVM [Homework 2h]

Module 4: JVM flags [3h]

  • Purpose and categories of JVM flags
  • Common flags
  • String-related flags
  • Memory management flags
  • Safepoints and related flags
  • TLABs and related flags
  • JVM tuning plan

Module 5: Java benchmarking with JMH [2h]

  • What is benchmarking?
  • Introduction to JMH
  • API of JMH
  • Untrivial examples
  • JMH practice [Homework 2h]

Module 6: Using off-heap memory and efficient data structures [4h]

  • What is sun.misc.Unsafe?
  • Unsafe methods
  • Native memory performance
  • Creation of data structures in native memory
  • Measurements of performance of native memory (and comparison with memory on heap)
  • Primitive collections
  • Denormalization of data
  • Foreign Memory Access API [Homework 2h]
  • Module 7: Serialization and networking [3h]
    • JSON serializers (GSON, Jackson)
    • Binary serializers (Protobuf, Jackson Smile, Kryo, FST, One NIO)
    • Performance comparison of various serializators
    • Networking performance when connecting using various protocols: HTTP/REST, TCP, Async TCP, RSocket, Netty server/client

  • Module 8: Java profiling [5h]
    • When and how to do profiling
    • Sampling and instrumenting profilers
    • Using Java VisualVM for profiling
    • Profiling with Spring AOP
    • Profiling with IDEA and async profiler
    • Java Flight Recorder
    • Analysis of Java Flight Recorder logs using Mission Control
    • Create and log custom JFR events
    • Using Java agents injected into code (to record events in Java Flight Recorder)
    • Writing programs for automatic analysis of JFR logs
    • Collecting and analyzing SQL queries using JFR
    • Collecting and analyzing REST requests using JFR
    • Application Performance Management tools
    • Using Glowroot for SQL queries and REST requests profiling and analysis [Homework 2h]

    Module 9: Monitoring and analysis of heap data / Memory leaks [3 hours]

    • Tools for analyzing heap memory
    • Signs of memory leaks
    • Main causes of memory leaks
    • Search and detection of memory leaks
    • Weak and phantom references
    • IDEA tools to analyze heap dumps
    • Async profiler to analyze memory consumption
    • Using VisualVM profiler generations count to detect a memory leak
    • Using MissionControl/JFR for automatic memory leaks analysis
    • Eclipse Memory Analyser – denominators and heap analysis

    Module 10: Java caching [3 h]

    • Caching patterns
    • HTTP caching
    • Creating intermediate cache with nginx
    • Caching libraries configuration
    • Popular caching libraries: EhCache, Caffeine
    • Service level caching
    • Caching Spring Services
    • Input/Output bufferin
    • Processor caches and contiguous memory
    • JPA/Hibernate caching
    • Using caches on different layers of application

    Total: theory 40h (100%), homework 11h (+28%)

    Courses you may be interested in
    Design Patterns for Java (GoF)
    Our course covers 23 basic patterns that are generally considered to be the foundation for all other patterns. During the course participants will have the opportunity to practice these patterns with the help of case studies and exercises.
    DEV-001_JVA
    24 hours
    Code Refactoring for Java
    The course deals with the concept of refactoring as a way of preventing software rot. The course describes various smells indicating that a code needs refactoring, explains which refactoring types best suit specific situations, and describe
    DEV-006_JVA
    24 hours
    Java Advanced: Functional, Asynchronous, and Reactive Programming
    This training focuses on the contemporary functional, asynchronous, and reactive approaches to Java development. It covers the examination of NIO2, CompletableFurure, RxJava, Reactor, R2DBC, SSE, Spring Data reactive, WebClient, reactive We
    JVA-074
    36 hours
    Still have questions?
    Connect with us