Comparison of application virtualization software

The table here summarizes elements for which the virtual machine designs are intended to be efficient, not the list of abilities present in any implementation.

However, more complex methods are often employed, which specialize compiled code fragments to parameters known only at runtime (see Adaptive optimization).

Ahead-of-time compilation (AOT) refers to the more classic method of using a precompiler to generate a set of native instructions which do not change during the runtime of the program.

Because aggressive compiling and optimizing can take time, a precompiled program may launch faster than one which relies on JIT alone for execution.

JVM implementations have mitigated this startup cost by initial interpreting to speed launch times, until native code fragments can be generated by JIT.

For example, several design provisions of CIL are present to allow for efficient shared libraries, possibly at the cost of more specialized JIT code.