http://en.wikipedia.org/wiki/Just-in-time_compilation
In computing, just-in-time compilation (JIT), also known as dynamic translation, is a method to improve the runtime performance of computer programs based on byte code (virtual machine code). Since byte code is interpreted it executes slower than compiled machine code, unless it is actually compiled to machine code, which could be performed before the execution – making the program loading slow – or during the execution. In this latter case – which is the basis for JIT compilation – the program is stored in memory as byte code, but the code segment currently running is preparatively compiled to physical machine code in order to run faster.
JIT compilers represent a hybrid approach, with translation occurring continuously, as with interpreters, but with caching of translated code to minimize performance degradation. It also offers other advantages over statically compiled code at development time, such as handling of late-bound data types and the ability to enforce security guarantees.
JIT builds upon two earlier ideas in run-time environments: bytecode compilation and dynamic compilation. It converts code at runtime prior to executing it natively, for example bytecode into native machine code. Several modern runtime environments, such as Microsoft's .NET Framework and most implementations of Java, rely on JIT compilation for high-speed code execution.