java与python

别说谁变了你拦得住时间么 提交于 2019-12-21 04:41:29
  1. 高级语言-> 机器代码:
  2. 高级语言-> 字节码 ->机器代码
    2.1 java
    java 在执行过程中先利用javac将源文件编译成.class字节码,然后在jvm上继续解释和编译成可执行的机器代码。你可能注意到在jvm过程中同时有编译和解释的过程,这是跟jvm运行机制有关:
    JVM有三种运行模式:解释模式,编译模式,混合模式。上图对应的是混合模式,其流程为:
    1.源代码经过编译器成为.class文件,也就是字节码。
    2.程序字节码经过JIT判断,是否属于热点代码,例如循环或者频繁调用的方法。
    3.如果是,被JIT编译成机器字节码,对应具体硬件处理器(如sparc,intel)。
    4.如果不是,被JIT解释器解释执行。
    所以JIT是一个解释器和编译器的集合,某些“热点代码”可以通过编译来节省逐条解释的耗时,其他代码仍旧通过解释器执行。
    2.2 python
    py文件被编译成.pyc 字节码文件。这个字节码文件跟平台无关。接下来由pvm解释执行这个字节码文件,每一次负责将一条字节码文件语句翻译成cpu可以直接执行的机器代码,然后在接下来下一句。
    对于python来说,没有针对机器代码的编译,每一条语句的执行都是直接对源代码或者中间代码进行解释运行。而少了这个编译的过程,使得解释型语言运行较慢。另外,在逐条解释的过程中,效率也较低。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!