In order to improve performance, JIT compilers often perform machine-dependent optimizations on the program code; this consumer-side optimization is sometimes enhanced by producer-side program annotations.
[41, 31]), which may be slower than for stack-based counterparts, but could be used for program execution on platforms for which JIT compilers are not yet available.
JIT compilers that transform JVML and CIL programs, respectively, into machine code have been developed for the most common computer systems.
In recent years a lot of powerful JIT compilers for stack-based mobile code formats have been developed: especially notable are Sun's HotSpot compiler [62, 6] and IBM's Jikes RVM [7, 44], respectively.
Following inlining, the IBM JIT compiler performs general exception check elimination and common subexpression elimination based on program flow information.
At this point, the IBM JIT compiler generates native x86 machine code based on the extended bytecode representation.
Intel includes a JIT compiler with the VTune optimization package for Java that interfaces with the Microsoft JVM [Adl-Tabatabai et al.
The open-source Kaffe project provides a JIT compiler for the Kaffe JVM that supports various operating systems on the x86, Sparc, M68k, MIPS, Alpha, and PARisc architectures [Wilkinson, Kaffe v0.10.0].
In any case, using a JIT compiler promises some significant speedup and there is no question that JIT compilers help, but that's not the whole story.
Sun's Hotspot run time shows significant promise to outperform current JIT compiler run times.
JIT compilers can only speed up the Java part; they can do nothing about the operating system calls.
But to be honest, after comparing Java programs that use JIT compilers to normal C and C++ applications, it's still slow.