WeAreDevelopers LIVE • Sep 1, 2021

Just-in-time Compilation in JVM

Daniel Strmečki

Is Java compiled or interpreted? The answer is uniquely both. Discover how the JVM's tiered JIT compilation dynamically transforms bytecode into optimized machine code.

Pause
Mute Enter Fullscreen
#1 about 4 min

Differences between compiled and interpreted programming languages

Compilers convert code directly to machine native form while interpreters execute instructions piece by piece during runtime.

#2 about 4 min

Java portability and JVM bytecode execution architecture

Java achieves cross-platform compatibility by compiling source files into specialized bytecode that the Java Virtual Machine interprets natively.

#3 about 3 min

Enhancing JVM performance with just-in-time compilation

The JIT compiler boosts performance by dynamically translating frequently executed hotspot routines into machine-native instructions during runtime.

#4 about 3 min

Benchmarking JIT performance against C++ and JavaScript

Disabling the JIT compiler reveals vast algorithmic slowdowns when compared to the highly optimized execution speeds of native languages like C++.

#5 about 3 min

Comparing client and server JIT compiler implementations

Client compilation prioritizes fast application startup times while server compilation focuses on deep code optimization for long-running workloads.

#6 about 4 min

Optimizing Java performance with tiered compilation concepts

Tiered compilation blends rapid startup with long-term efficiency by progressively replacing quickly compiled blocks with heavily optimized instructions as profiling data accumulates.

#7 about 3 min

Exploring five distinct compilation levels within the JVM

The JVM escalates source logic through multiple interpretation and profiling stages depending on algorithm complexity and available compilation queues.

#8 about 2 min

Managing code caching and assumption-based method deoptimization

The JVM automatically purges compiled methods from the internal cache when changing runtime behaviors invalidate the compiler's initial optimization assumptions.

#9 about 2 min

Tweaking JVM compilation thresholds and runtime execution flags

Software engineers can optionally bypass optimization layers or edit threshold thresholds to restrict how many invocations are required before aggressive compilation starts.

#10 about 6 min

Tracing method lifecycles using printed JVM compilation logs

Activating print parameters exposes detailed output revealing the exact timestamp, active compilation tier, and deoptimization triggers for specific application methods.

#11 about 9 min

Discussion on JIT memory parameters and cross-language benchmarking

The final sessions explore topics covering internal heap allocation limits for compiled code pools, machine code portability constraints, and overall language efficiency metrics.

Matching moments

4:02 min

Understanding Java virtualization and just-in-time compiler performance challenges

Eric Deandrea Eric Deandrea · World Congress 2025

2:02 min

Understanding Java virtual machine just-in-time compilation

Timo Salm Timo Salm · LIVE

2:07 min

Understanding JIT compilation and breakpoint de-optimization

Johannes Bechberger · LIVE

1:34 min

Improving runtime performance through just-in-time compilation

Gaurav Gahlot Gaurav Gahlot · World Congress 2026 Europe

2:10 min

Optimizing Java tiered compilation in short-lived environments

Vadym Kazulkin Vadym Kazulkin · LIVE

6:39 min

Comparing Java adaptive compilation with ahead-of-time builds

Josh Long · World Congress 2022

Upcoming sessions on this topic

Open session

Java is Coming for Python’s Lunch: The Rise of JVM AI Agents

  • Frederik Pietzko

    Jetbrains

    Developer Advocate

Open session

From Profiler to Production: Measuring What Actually Matters in React & React Native

  • Andrei Tazetdinov

    Dynatrace

    React Native Developer

Open session

How We Cut Our API's p99 Latency from Minutes to Under a Second

  • Deepak Agrawal

    Atlassian

    Principal Software Engineer

Open session

How 8 GPUs Became 16: Rethinking LLM Inference Through Parallelism, Memory, and Runtime Design

  • Purnima Kumari

    DigitalOCean

    Sr. Solutions Architect II

Open session

Speed or Security? Why Not Both for Your Coding Agents

  • Ajeet Raina

    Docker

    Developer Advocate

Open session

Teaching AI Coding Agents to Build It Right the First Time

  • Sajeetharan Sinnathurai

    Microsoft

    Principal Product Manager