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