众所周知:JVM执行Java代码是靠执行引擎实现的。执行引擎有两套解释器:字节码解释器、模板解释器。字节码解释器比较简单,不多说,看图。本篇文章咱们讨论模板解释器执行Java代码的底层原理。
早些年研究模板解释器看到R大用汇编写的迷你版解释器,心里想:太特么牛叉了,我连怎么实现的都不知道,人家都写出来了,这差距。随着自己的努力,不断的研究沉淀,如今这些对我来说也不是那么难了。
R大写的解释器纯汇编,小伙伴们可能看不懂。你如果感兴趣可以看我写的,我用C++包装了汇编,理解门槛可能低很多。但是如果你真正的想学明白,还是得有熟练使用汇编的水平哈。关注公众号【硬核子牙】回复【执行引擎】,领取解释器代码。
本篇文章更近一层,不仅告诉你JVM的执行引擎是如何实现的,还会告诉你JVM的执行引擎是如何在OS的栈与自实现的栈之间来回切换完成程序运行的。小伙伴们感受到了吗,那种接近技术本质的兴奋感。
答案
如果你只想知道答案:JVM的执行引擎,即模板解释器。是通过在OS的栈与自实现的虚拟机栈来回切换完成执行Java程序的。看图
确实很抽象,打个比方吧:你想写一个很大的字,比如:牙。一张纸你觉得不够大,你搞了两张纸。写完以后是不是每张纸上都有一点,拼在一起才是一个字。这里的笔就是执行引擎,两张纸大家应该都GET到了,一张如OS栈,一张如JVM栈。
原