A Just In Time (JIT) Compiler converts Byte Code to executable machine instructions on the fly. As a consequence, it differs in subtle ways from a traditional compiler. First off, since many problems (example, Register Allocation) are computationally complex, a JIT Compiler uses fast heuristics instead of well established, but slower, algorithms. This may result in sub-optimal results. However, as a benefit, JIT Compilers have access to the code as it is running, and as such may dynamically determine code segments to be optimized to a greater degree.
Examples of JIT Compilers include:
Sun Microsystems Hot Spot JVM,
IBM's Jikes RVM (Research Virtual Machine),
Microsoft's .Net JIT (name unknown), and
The Mono project's .Net JIT.
Spider Monkey's tracing JIT (developer.mozilla.org )
Lua Language's LuaJIT (luajit.org )
See original on c2.com