成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

憑啥Java運行環境稱虛擬機 Python只能稱解釋器

開發 后端
看到Stackoverflow上有個問題在討論Java和Python的對比,其中就有人問答為啥Java的運行環境被稱之為JVM,而Python的只能叫做Interpreter。

本博文出自51CTO博客cnn237111博主,有任何問題請進入博主頁面互動討論!

博文地址:http://cnn237111.blog.51cto.com/2359144/1616091

這個問題估計想過的人不多,先找維基百科看一下虛擬機的定義。

虛擬機的定義有2個,一種是類似Vmware的系統虛擬機,另一種是虛擬機稱之為程序虛擬機,諸如JVM,CLR就是最常見到的虛擬機。

[[128409]]

程序虛擬機也稱作托管運行時環境,運行這個虛擬機時,就好比普通的OS中的一個進程。當這個進程啟動時,虛擬機啟動,當進程銷毀時,虛擬機銷毀。使用虛擬機的目的就是提供一個和平臺無關的編程環境。

JVM中的執行引擎只能處理編譯后的Java字節碼,字節碼處理引擎其實包含一個字節碼解釋器和一個JIT編譯器(和.net的CLR中JIT差別很大),解釋器逐條的執行字節碼指令,速度稍慢。JIT編譯器則會將熱點代碼編譯緩存起來,因此執行速度加快。

解釋器的概念比較簡單,它可以將代碼翻譯,并運行,不需要經過編譯,JVM中的解釋器正式這樣的,JVM中解釋的就是字節碼。解釋器運行程序的方法有3種:

直接運行高級編程語言(如Shell內置的解釋器)

轉換高級編程語言碼到一些有效率的字節碼(Bytecode),并運行這些字節碼

以解釋器包含的編譯器對高級語言編譯,并指示處理器運行編譯后的程序(例如:JIT)

其中Python的解釋器就是屬于第二種,Python代碼在***運行時,它會將Python代碼編譯成字節碼,如果可以的話,它會將這個字節碼保存到.pyc文件中,這樣下次啟動的時候就不會再編譯這些代碼而是直接解釋運行字節碼。事實上,這種機制正在模糊解釋器和編譯器之間的界限,或者說是模糊了解釋型語言和編譯型語言的界限。

通過JVM和解釋器的概念澄清,似乎還是不明白為啥JVM就被稱為虛擬機,JVM中有運行的是字節碼,它可能直接被解釋執行,也可能被再次編譯成目標語言,Python中的解釋器也會先預編譯Python代碼為字節碼,再解釋執行。那么到底有啥區別?

很多人參與了討論,分別從不同的角度去闡述區別。

有人認為虛擬機是和語言無關的,JVM為例,除了Java之外,Scala,Clojure,甚至Python借助于Jython工具,也可以運行在JVM上,而沒聽說什么語言能有Python解釋器解釋執行,除了Python。

也有人從語言的類型上,Java為靜態類型的語言,而Python為動態語言。這使得Java字節碼既可以被解釋執行也可以被編譯成機器指令再執行。而Python則復雜多了,它雖然讓程序員可以不去關注變量的類型,但解釋器不得不去推斷數據類型,這一定程度上影響性能。

還有觀點認為解釋器是一個歷史遺留術語,現代語言中虛擬機和解釋器的分界已經很模糊甚至不存在。

事實上,筆者在《Learning Python》一書中,看到把作者把Python的解釋器稱為PVM,基于這個事實來講,本人更認同的是解釋器和虛擬機的區別正在越來越小,已經是我中有你,你中有我的地步。獨立的分割來看,可能還能區分這幾步是解釋器行為,這幾步是虛擬機的行為,但是作為一個整體來看,兩者的區別確實沒那么明顯。

 

責任編輯:王雪燕 來源: 51CTO博客
相關推薦

2010-02-24 10:49:11

Python運行環境

2023-03-06 10:03:05

Java運行機制

2020-10-21 08:16:37

Java基礎入門篇

2013-06-17 10:16:53

虛擬機虛擬化安全

2014-11-27 15:08:05

虛擬化動態遷移

2018-05-09 10:55:06

微軟 Windows Linux

2010-06-11 14:50:48

虛擬機安裝openSU

2011-09-05 11:04:19

VMworld桌面虛擬化

2012-05-18 10:22:23

2019-07-05 15:14:34

虛擬機WindowsWindows 10

2009-08-18 10:48:33

2024-03-26 07:30:07

Java虛擬機源文件

2022-02-15 14:08:32

虛擬機Wasm瀏覽器

2012-09-28 13:09:41

Windows 8

2009-03-05 09:43:04

Mozilla手機瀏覽器Fennec

2010-07-26 09:02:38

2018-11-22 12:07:37

Java虛擬機結構

2013-08-16 11:17:35

虛擬桌面虛擬快照

2013-07-17 09:32:58

2023-11-17 14:06:43

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩一区在线 | avav在线看| 成人欧美一区二区三区在线播放 | 免费一区二区三区 | 精品视频999| 亚洲一区二区电影在线观看 | 成人做爰www免费看视频网站 | 精品福利视频一区二区三区 | 蜜桃官网 | 视频在线一区二区 | 国产片网站 | 午夜精品视频在线观看 | 成人妇女免费播放久久久 | 精品福利视频一区二区三区 | 成人特区| 蜜桃av鲁一鲁一鲁一鲁 | 夜夜精品浪潮av一区二区三区 | 国产激情视频在线观看 | 日韩毛片免费视频 | 麻豆精品久久久 | 91色站| www.99热.com | 日韩av一区二区在线观看 | 国产午夜精品一区二区三区四区 | 日韩电影免费在线观看中文字幕 | 成人欧美一区二区三区黑人孕妇 | 日本一区二区高清不卡 | 日韩在线中文 | 美女拍拍拍网站 | 国产片网站 | 亚洲视频一 | 黑人中文字幕一区二区三区 | 精品国产伦一区二区三区观看说明 | 天天操天天射天天舔 | 欧美一级黄带 | 欧美日韩高清一区二区三区 | 涩涩视频在线观看免费 | 成人黄色在线 | 一区二区成人 | 亚洲一区二区免费 | 91综合网 |