Just-In-Time Compiler is a special type of compiler, or component of an environment that combines the power of compilation and interpretation to boost performance. It is a mid-way between compiling and interpreting. Although the term was coined by James Gosling later, John McCarthy and Ken Thompson are the pioneers in developing this technology.
Functionality
A JIT compiler’s execution is done at two stage: compile time & run time.
- Compile Time: A program is turned into an intermediate form (bytecode). At this level, the the intermediate code is quite slow.
- Run Time: Here, the bytecode is powered by JIT to be compiled targeting CPU-specific architecture. The bytecode is turned into machine code (known as dynamic compilation). As a result, performance dramatically upgrades.

Advantages
- Speed-boost
- Interpreter-like flexibility
- Cache optimization
- Better performance than interpreter and static compiler
Applications
- JVM (Java)
- Common Language Runtime(C#)
- Dalvik Virtual Machine
- Android Runtime
- PHP (from version 8.x)