Various types of Java compilers have been proposed,
including Just-In-Time (JIT) compilers thatcompile bytecodes into native processor instructions on the fly;
direct compilers that directly translate the Java source code into the target processor’s native language;
and bytecode-to-source translators that generate either native code or an intermediate language, such as C, from the bytecodes.