Java High Performance

Java High Performance
Java High Performance
English | MP4 | AVC 1920×1080 | AAC 48KHz 2ch | 2h 08m | 529 MB

Measure and Improve performance of your Java codebase using most efficient API constructs

Java 12 comes with a host of new features and APIs with lots of ready-to-use components to help you build efficient and scalable applications. You will leverage JFR (Java Flight Recorder) to test the performance of your applications and learn about general Java performance practices and improvements introduced in Java 12.

In this hands-on course, you will build a data-processing application and improve its performance in every section as you progress through the course. You will use the AOT compiler and JShell to prototype your Java code. Moving on, you will be introduced to multithreading and will learn about concurrent programming to build highly concurrent and efficient applications.

By the end of the course, you will be able to build high-performance and efficient applications optimized in various aspects of Java.

A guide to improving the performance of Java applications. You will build a Java application and improve its performance in every section of the course. Every section focuses on a different high-performance aspect.

Learn

  • Validate the high performance of your algorithms using the JMH tool
  • Use java.util.concurrent primitives effectively in a multi-threaded environment
  • Optimize your day-to-day programs by applying performant computations
  • Use the AOT Compiler to improve performance
  • Use JShell to reduce feedback loops and prototype code more rapidly
  • Use the Java Flight Recorder to validate the performance of your applications
  • Write non-blocking algorithms using the CompareAndSet pattern
  • Perform I/O operations in a memory- and CPU-efficient way
Table of Contents

Benchmarking Performance with JMH Tool
1 The Course Overview
2 Setup JMH Tool
3 Using @BenchmarkModes to Test Latency and Throughput
4 Adding Main Function JMH Runner
5 Using JMH to Compare the Performance of Two Algorithms
6 Improving Performance with AOT Compiler

Optimizing CPU-Intensive Computations with Java
7 Forward Iteration Versus Backward Iteration
8 Comparing Performance of Arithmetic Operations in Java
9 Speeding Up Processing with Vector Operations
10 Using JShell to Test and Prototype Java Code
11 Float Versus Double Performance

Using High-Performance Collections to Optimize Memory and CPU
12 Measuring Performance of Primitive Arrays
13 Using LinkedInList and ArrayList
14 Validating Iteration and Write Performance of Collections
15 Using ImmutableMaps for Better Performance
16 Performance of Filtering Stream API Versus Standard Collections

Tweaking Garbage Collection Process and Using JFR
17 Explanation of Regions in CMS Garbage Collector
18 Leveraging Improvements in G1
19 Examining Memory Leak Problems
20 Find Out Memory Problems Using Java Flight Recorder
21 Fixing Memory Leak Problem and Reducing Memory Pressure

Concurrency and Multithreading with Java
22 Parallelizing Computations with Streams.parallel
23 Choosing Parameters for ExecutorService
24 Using CompletableFuture for Async Purposes
25 Leveraging CompareAndSet for Non-Blocking Operations
26 Stack Walking API for Fast Access of Thread Stack Trace

Tweaking File System Access from Java API
27 Using FileCopy Operations with IO
28 Improving Performance with Direct Copy – transferTo()
29 Leveraging DirectBuffer to Avoid Unnecessary Allocations
30 Using HeapBuffer to Lower Memory Pressure
31 Measuring Performance of All Approaches and Pick the Best One