java与python运行机制对比,编译与解释有什么不同?
1.编译语言vs解释语言
首先,要先明确“编译”与“解释”两个词语的意思,这两个词语的意思明确了区分度就出来了
编译 | 解释 | |
---|---|---|
本质 | 翻译 | 翻译 |
原材料 | 高级编程语言 | 高级编程语言 |
发生时间 | 第一次运行前 | 每次运行的时候 |
产物 | 机器语言文件(如windows下的.exe) | 无 |
然后,我们可以由上述词语的含义对比两种类型的语言(定义是根据上表自定义给出,便于理解)
编译性语言 | 解释型语言 | |
---|---|---|
定义 | 该高级编程语言在第一次运行之前会先翻译成机器语言文件,并且在之后的运行成不再翻译而直接运行机器语言文件 | 该高级编程语言在每次运行中都会进行翻译,逐行翻译成机器语言执行 |
优势 | 运行速度快 | 兼容性强 |
例子 | c, c++ | JavaScript,脚本语言 |
2.Java vs Python
Java和Python都更加类似于一种编译-解释型语言,究其本质是一种具有转换过程的解释型语言,是编译型和解释型二者发展融合趋势的体现。
2.1 Java
2.2 Python
2.3 对比
Java | Python | |
---|---|---|
源文件 | .java | .py |
编译器 | javac.exe | python.exe |
中间代码 | .class(一定保存) | .pyc(不一定保存) |
静态 | 动态 | |
解释执行 | 虚拟机+java.exe | 解释器+python.exe |
相同点 | 跨平台运行 | 跨平台运行 |
最大不同 | 中间过程可分离 | 中间过程连贯 |
3.小结
两者在都想要相应跨平台运行的需求,所以在机制的设计上有序同相同的地方,共同地体现了编译型语言与解释型语言地界限越来越模型的现状。但是究其细节,两者在跨平台的实现上是不一样的,对于中间过程的静态还是动态,可分离还是密封,环境如何纳入考虑这个都是不一样的。
参考:
https://blog.csdn.net/Rain722/article/details/52624616
https://blog.csdn.net/Rain722/article/details/52624616
https://blog.csdn.net/weixin_33919950/article/details/88014835