I’ve read many definitions and statements about “Interpretation” and “compilation”. But I am still very much confused.
Technically speaking, what is REALLY the difference between interpretation and compilation under the hood? Let me elaborate (please correct any wrong concept I might have) :
In java, the source code is “compiled” into ByteCode which is then “interpreted” and/or “just-in-time compiled” into machine code. But what is the difference between just in time compilation and interpretation? I mean, in the end, as far as my guess goes, the Host’s CPU will run machine code only. Thus, in interpretation as well, instructions ARE being converted into machine code which can be understood by the CPU. So, where do we draw the line between just-in-time compilation and interpretation?
P.S. This is my conception. It might be totally wrong. In that case, Kindly excuse my stupidity and correct me.
Thanks.
1. Frankly speaking the idea that java has both Compiler and Interpreter is a myth, its the behavior of it that is marked as Compilation and Interpreter.
2. Java compiler compiles the human readable code to byte code. Which then is converted by the JIT (Just In Time Compiler) during runtime into machine level executable code.
3. During Runtime JIT identifies the runtime intensive part of the code and then converts it into machine level executable code, this part of the code is known as
Hot-Spot, and thats why JIT is called as Hot-Spot compiler.4. JIT uses the Virtual Memory Table ( V-table), which is a pointer to the method in the class. The Hot-Spot code is then converted to its machine level executable code, its address is stored here, and when this part is called again, then its directly fetched by this stored address.
This behavior of JIT to keep compiling small amount of code during Run time is assumed to beInterpreted Behavior, Andthe JIT behaviour of storing this for later use is assumed asCompilation.5. Virtual Memory Table also has a table which stores the address of the byte code, which can be used if needed.