ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

扫盲贴:Java程序执行流程

扫盲贴:Java程序执行流程 使用java编程的朋友通过IDE执行程序或者把项目打包成war包或者jar包然后放到tomcat或者jetty上面执行。可能对从编译到解释执行的流程不是那么地了解。那么请读下这篇文章帮助大家梳理整个java程序的执行流程可见一般java程序从程序编写在操作系统中执行需要通过编译器把.java格式的源文件编译成字节码的.class文件使用过命令行操作的朋友知道这部通过javac进行编译。这个字节码文件与平台无关。接下来我们会通过java命令进行程序运行过程就是java生成JVM实例把字节码文件通过类加载器加载进JVM中然后进行字节码的校验没有问题就通过解析器把字节码翻译成当前机器能识别的机器码。然后交给操作系统去进行调度执行。一、编译阶段在java编译器进行源代码翻译成字节码的过程是分成四个子过程的。1、词法分析这个阶段重要是把读取源文件的字符流转成一个个“单词”。2、语法分析这阶段把上一阶段生成的词法单元流单词组成一个个语法单元类似我们把英语句子中的单词组成一个个短语。最后构成一个语法树。3、语义分析分析语法树的执行流程是否正确这点类似我们把各个短语拼成句子然后分析整个句子是否正确。也许单个短语是没问题的但是组成句子就会出现含义的错误。4、翻译成字节码以上三步都没有问题那么就使用字节码生成器把语法树翻译成字节码。以上四个过程环环相扣如果有一个地方出问题就会导致编译出错。二、JVM运行阶段通过编译后得到字节码文件与平台Windows、linux..无关。但是特定平台的机器只能执行其相应的机器码。那么就需要有一个中间组件来对把字节码翻译成对应的平台的机器码这个就是解析器而解析器是在JVM里面的。解析器是一句一句代码进行解析的。JVM的执行流程1、JVM使用类加载器Class Loader装载 class 文件2、字节码效验主要做以下五步检查当前class文件的版本和JVM的版本是否兼容检查当前代码是会破坏系统的完整性检查当前代码是否有栈溢出的情况检查当前代码中的参数类型是否正确检查当前代码中的类型转换操作是否正确3、把通过校验的字节码解析成机器码解析器是一句句进行代码进行解析的。三、JITJust In TimeHotspot 虚拟机 提供了 JITJust In Time也就是我们通常所说的动态编译器 它能够在运行时将热点代码经常被访问的代码编译为机器码这个时候字节码就变成了编译执行。
返回列表