A method for executing code by compiling to machine code at runtime rather than before execution (ahead-of-time).

The goal of JIT is to achieve the same or better performance than AOT while maintaining the flexibility/portability of interpretation.

Compiling at runtime has the advantage of knowing how the code is being used during execution, which cannot be known when compiling ahead-of-time.

Compiling to machine code is typically faster for JIT compilers, as typically some work is done beforehand to get the source code into an intermediate state (e.g. Java bytecode).