In Java programming, a just-in-time (JIT) compiler is additionally given, as it can convert the bytecode of Java to the instruction which can be feed straight to your processor. It starts running just once your program starts and compiles your source code on the fly (hence termed as just-in-time). It is typically faster than normal compiling. It can access the runtime information dynamically which is not possible by the normal compiler.
This technique of compilation uses the blend of 2 traditional ways of translation from high-level code to machine code, these are - ahead of time compiling (abbreviated as AOT) as well as interpretation and at the same time carries the advantages as well as drawbacks of both techniques.
With the use of this compiler, at any moment, the system can compile your Java bytecode to that specific system code which makes Java code portable.
Here are few other related articles for you to read: