到底什么叫 "解释执行"
很多书上或者文章上都是这么写:JAVA编译是生成的JVM的指令,运行时,从程序中取一条伪指令,在JVM中翻译成一串机器指令,运行。再取一条指令,再翻译,再运行。
对于其中翻译二字实在不能理解,
目前我的想法是:
1.这个"翻译" 会执行真正意义上的编译和汇编和链接(类似于:cc,as,ld),这样的话是JVM就会把这个指令编译为native code,然后再运行,如果是这样如果这个平台上没有对应的编译器,汇编器,或者链接器,程序岂不是运行不起来,还是JVM有自带的编译器?
2."翻译"应该是JVM在不同平台上对一条JAVA指令对应一个本地的函数(native code),不同平台对应不同的函数,而JVM 就是提供这个本地函数集的作用,这样就实现了编译成同样的字节码可以在不同平台在运行?
如果是第一种,速度肯定不止慢一点点啊,
如果是第二种,速度应该不慢啊,(这种情况JIT应该起不了多少作用)
不知以上理解和正确沾边没有,求赐教,求指正。