JVM Performance and Optimization for Scala Engineers

Learn techniques for writing performant Scala code and effective use of tools for analyzing performance.

Book a Training

Overview

The JVM is a rock-solid, battle-proven platform for developing and deploying applications. Thousands of engineering years have been invested into the facilities available on it, resulting in sophisticated garbage collection and just-in-time compilation mechanisms. The interaction between this platform and our applications is nuanced and often misunderstood; more so when using the Scala programming language.

In this 2 day workshop, the participants will learn about the two major runtime mechanisms of the JVM affecting performance - the JIT compiler and the garbage collector - and how they interact with applications written in the Scala programming language; techniques for writing performant Scala code and effective use of tools for analyzing performance.

Are you interested in attending a private training course?

Register for Private Training

Are you interested in attending a public training course?

Register for Public Training

Who Should Attend

Engineers, SREs and tech leads responsible for production Scala applications.

Prerequisites

Basic knowledge of the Scala programming language and the JVM; basic experience running Scala applications in production.

Topics

  • Overview of the JVM
  • Garbage collection on the JVM
  • Types of garbage collectors and choosing a garbage collector for a workload
  • Analyzing allocations in Scala code
  • Writing Scala code that is lean on allocations
  • Analyzing bytecode to pinpoint allocations
  • Monitoring garbage collector performance at runtime
  • Understanding JIT compilation on the JVM
  • Benchmarking code using JMH
  • Analyzing JIT behaviour at runtime
  • Writing JIT-friendly Scala code
  • Using Yourkit to monitor JVM performance at runtime (and on Kubernetes)
TESTIMONIAL
Last year, we started using ZIO, as a superior alternative to tagless-final and Monad transformers. ZIO is a powerful effect monad with a lot of combinators, interop with important libraries, and new integrations with OpenTracing and logging. ZIO lets us focus on our business logic, making it easier to understand and test, and there is no doubt ZIO will be one of the significant parts of Scala infrastructure over the coming years!
Jan de Groot
DHL Parcel Netherlands - Head of Development

Related Courses

Event-driven Applications with Kafka

Gain the skills and knowledge required to build Scala applications that use Kafka as their backbone.

# backend
16 hours

Kubernetes for Application Developers

Learn the patterns, architectures and techniques required to write resilient applications on Kubernetes.

# backend
16 hours

JVM Performance and Optimization for Scala Engineers

Learn techniques for writing performant Scala code and effective use of tools for analyzing performance.

# backend
16 hours

Book a Training