持续更新JVM相关知识,敬请关注:
Java虚拟机精髓专栏zhuanlan.zhihu.com![9712bb731f0b90cfedbcf9a1c889f2e7.png](https://i-blog.csdnimg.cn/blog_migrate/06ee856a62b065719d594d47bdf6d4f9.jpeg)
这里再简单回顾下Java代码执行的整个过程,首先是前端编译过程,java源文件,通过前端编译器,生成出字节码文件(class文件)。
前端编译器,细化会拆分出词法分析、语法分析、语义分析、字节码生成,这部分的内容不必过多研究,大致了解下就可以,如果你学过汇编相关知识,会比较了解这一块。
另外,如果你想自己开发一门属于自己的语言,然后借助Java虚拟机去运行,那你则需要在这部分好好下下工具,去设计你自己的语法规范、开发自己的编译器,然后只要最终生成的字节码文件复核JVM的规范,就可以在其上运行。
在编译过程的众多环节上,任何一个部分失败,都将导致最终的字节码文件生成失败。JAVA出于安全考虑,对于字节码文件的要求非常高,只有完全符合规范的class文件才能被最终执行。
图下面的java虚拟机部分就是上一节中所提到的,字节码解释运行的过程,负责把字节码文件翻译成操作系统能够看懂的机器指令。这里要说一下,操作系统只能够看懂机器指令,当前的高级语言,需要先翻译成汇编语言,然后再翻译成机器指令,解释器、JIT组成的执行引擎就是做这个的。
解释器是负责响应时间,JIT主要负责性能。
![dc754e735ad11d121b7ec7d19a5983e6.png](https://i-blog.csdnimg.cn/blog_migrate/2d7480649ae5e2cc11bca33c28620833.jpeg)
![f25df809e3c6f25af7519d07014ba7b8.png](https://i-blog.csdnimg.cn/blog_migrate/463b8e53b123feaa0d08408cf2dfcd72.jpeg)