节:Java代码执行流程
Posted 李阿昀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了节:Java代码执行流程相关的知识,希望对你有一定的参考价值。
这一讲,我们来重新温习一下Java代码的一个执行流程。
在这之前,大家不妨看一下下面这张图,相信大家或多或少都看过,因为类似的图有很多。
从上图中可以看到,我们写的Java源文件,即.java
结尾的文件,首先需要经过一个编译的过程生成一个或多个字节码文件,当然,相信大家都知道这每一个字节码文件它都对应着一个具体的类,然后生成的字节码文件才能被解释执行。注意,字节码文件是要运行在具体操作系统之上的JVM当中的。
看完上图还不够,这里我还想将上图再来展开说一下,展开之后的图如下所示。
从上图中大家同样可以看到,Java源文件首先还是得经过Java编译器(也可以称作前端编译器)生成字节码文件,只不过在这一过程中,会涉及到Java编译器的许多具体的细节,具体一点来说,就是编译过程包括词法分析、语法分析以及语义分析等详细步骤,甚至还会用到抽象语法树。
这一过程相信对于学过汇编的童鞋来说,应该并不陌生,不过没有学过,也不打紧,因为我们的重点并不在前端编译器涉及到的诸多细节上,除非你是要自己开发一门语言。当然,如果大家有时间和兴趣,那么不妨考虑自己开发一门语言玩玩,开发一门语言的重点就是你要如何去设计这门语言的语法以及所谓的前端编译器,而且在开发完成之后,你依旧可以借助Java虚拟机来解释执行这门语言写就的程序,只不过要求源文件生成的字节码文件满足Java虚拟机规范才可以。
说了这么多,我其实想说的是在源文件编译的过程当中,如果编译器的任何一个环节失败了,那么都是不能够正确生成字节码文件的。而且,Java虚拟机规范中也已经说过了,就是Java虚拟机对字节码文件的要求是非常严格的,字节码文件必须要能被Java虚拟机准确识别,只有这样,Java虚拟机才能去解释运行字节码文件,否则Java虚拟机是免不了要遭受一些恶意程序的攻击的。
总之,只要任何一门编程语言的编译结果满足并包含Java虚拟机的内部指令集、符号表以及其他的辅助信息,那么它就是一个有效的字节码文件,就能够被虚拟机所识别并装载运行。说白了,字节码文件也具有跨语言的平台的这样一个特征。
以上是关于节:Java代码执行流程的主要内容,如果未能解决你的问题,请参考以下文章
《快乐编程大本营》java语言训练班-第4课:java流程控制