How Does the Just in Time Compiler for Java Works?

The working of the Just-In-Time compiler is more or less the same for all the JIT compilers. The source code is compiled to the bytecode by the Java Virtual Machine (JVM).

The JVM also comes with the JIT compiler which is used when the application is run. Upon executing the application the bytecode is converted to the machine code or the native code that is run by the machine.

The job of the JIT compiler is to convert this bytecode to the machine code. All the JIT compilers work in the same manner. The JIT compiler uses a V-table which is a pointer to the methods in the class. This internal table is used to compile the methods to native code.

The address of the JIT compiler itself is placed in the V-table and this address is called during execution and the JIT compiler executes the native code and stores that address to the V-table. And from now on this address is called whenever that method is called and the native code is executed.

Only during the first call to a method it is compiled and for the subsequent calls the native code for that particular method is called. The V-table maintains the addresses of the native code for all the methods that are compiled. V-table also maintains another table which has the addresses of the bytecode itself in case there is a need to compile it for the first time.