Java Advanced II: High Performance Java
Java Advanced II: High Performance Java
Duration
40 hours
Location
Online
Language
English
Code
JVA-076
04.12.2023 - 18.12.2023
800.00 *
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.
After completing the course, a certificate
is issued on the Luxoft Training form
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
Roadmap
-
Performance tuning overview
- 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 performance via architecture
- Common best practices for improving code performance
-
GC algorithms
- 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
-
HotSpot JIT compiler
- 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
-
JVM flags
- 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
-
Java benchmarking with JMH
- What is benchmarking?
- Introduction to JMH
- API of JMH
- Untrivial examples
- JMH practice
-
Using off-heap memory
- 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)
- Foreign Memory Access API
-
Serialization
- JSON serializers (GSON, Jackson)
- Binary serializers (Protobuf, Jackson Smile, Kryo, FST, One NIO)
- Performance comparison of various serializators
-
Java profiling
- 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
-
Monitoring and analysis of heap data / Memory leaks
- Tools for analyzing data in heap memory
- Signs of memory leaks
- Main causes of memory leaks
- Search and detection of memory leaks
-
GraalVM
- GraalVM ecosystem
- GraalVM runtimes
- Polyglot API
- Compilation and Native image
- Benchmarks
-
Java caching
- Caching patterns
- Comparison of caching API
- Caching of database queries
- HTTP caching
- Basic metrics and settings for caching libraries
- Comparison of popular caching libraries
- Service level caching
- Caching Spring Services
- Applications using caches on different layers
-
Overview of other approaches to improve performance
- Parallel programming (thread pools, parallel streams, fork-join framework)
- Asynchronous programming
- Reactive programming (Reactor, VertX)
- Optimization of database access
- Cloud computing (microservices, Spring Cloud)
- Benchmarks and conclusions
Schedule and prices
View:
04.12.2023 -
18.12.2023
12:00-16:00
Location:Online
Duration:40 hours
Language:English
Time:12:00-16:00
Timezone:UTC +2
Trainer:
Sonkin Vladimir
Trainer
Sonkin Vladimir
800.00
Trainers

Sonkin Vladimir
Java and Web Technologies Expert
Vladimir has more than 12 years of experience in Java Enterprise development and has been working for Luxoft since 2006, where he is now a Senior Developer involved in one of our most important banking projects.
During this period he has been involved in several large scale software development projects for a wide array of industries such as banking, agriculture and e-commerce. As a result he has been able to work with a variety of technologies such as Java or JavaScript, used in developing complex Web applications and Web interfaces with low response time.
His main interest is in developing scalable and ergonomic Web interfaces and technologies aimed at increasing the productivity level of software developers. Since 2004, Vladimir has developed and conducted trainings on Java, Java Enterprise, SQL Server DBMS and AngularJS.
Vladimir has more than 12 years of experience in Java Enterprise development and has been working for Luxoft since 2006, where he is now a Senior Developer involved in one of our most important banking projects.
During this period he has been involved in several large scale software development projects for a wide array of industries such as banking, agriculture and e-commerce. As a result he has been able to work with a variety of technologies such as Java or JavaScript, used in developing complex Web applications and Web interfaces with low response time.
His main interest is in developing scalable and ergonomic Web interfaces and technologies aimed at increasing the productivity level of software developers. Since 2004, Vladimir has developed and conducted trainings on Java, Java Enterprise, SQL Server DBMS and AngularJS.
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.
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 describes the work of refactoring in detail through analyzing concrete real-life cases.
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 WebSocket, and RSocket.