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.