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

憑啥Java運(yùn)行環(huán)境稱虛擬機(jī) Python只能稱解釋器

開發(fā) 后端
看到Stackoverflow上有個(gè)問題在討論Java和Python的對(duì)比,其中就有人問答為啥Java的運(yùn)行環(huán)境被稱之為JVM,而Python的只能叫做Interpreter。

本博文出自51CTO博客cnn237111博主,有任何問題請(qǐng)進(jìn)入博主頁(yè)面互動(dòng)討論!

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

這個(gè)問題估計(jì)想過(guò)的人不多,先找維基百科看一下虛擬機(jī)的定義。

虛擬機(jī)的定義有2個(gè),一種是類似Vmware的系統(tǒng)虛擬機(jī),另一種是虛擬機(jī)稱之為程序虛擬機(jī),諸如JVM,CLR就是最常見到的虛擬機(jī)。

[[128409]]

程序虛擬機(jī)也稱作托管運(yùn)行時(shí)環(huán)境,運(yùn)行這個(gè)虛擬機(jī)時(shí),就好比普通的OS中的一個(gè)進(jìn)程。當(dāng)這個(gè)進(jìn)程啟動(dòng)時(shí),虛擬機(jī)啟動(dòng),當(dāng)進(jìn)程銷毀時(shí),虛擬機(jī)銷毀。使用虛擬機(jī)的目的就是提供一個(gè)和平臺(tái)無(wú)關(guān)的編程環(huán)境。

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

解釋器的概念比較簡(jiǎn)單,它可以將代碼翻譯,并運(yùn)行,不需要經(jīng)過(guò)編譯,JVM中的解釋器正式這樣的,JVM中解釋的就是字節(jié)碼。解釋器運(yùn)行程序的方法有3種:

直接運(yùn)行高級(jí)編程語(yǔ)言(如Shell內(nèi)置的解釋器)

轉(zhuǎn)換高級(jí)編程語(yǔ)言碼到一些有效率的字節(jié)碼(Bytecode),并運(yùn)行這些字節(jié)碼

以解釋器包含的編譯器對(duì)高級(jí)語(yǔ)言編譯,并指示處理器運(yùn)行編譯后的程序(例如:JIT)

其中Python的解釋器就是屬于第二種,Python代碼在***運(yùn)行時(shí),它會(huì)將Python代碼編譯成字節(jié)碼,如果可以的話,它會(huì)將這個(gè)字節(jié)碼保存到.pyc文件中,這樣下次啟動(dòng)的時(shí)候就不會(huì)再編譯這些代碼而是直接解釋運(yùn)行字節(jié)碼。事實(shí)上,這種機(jī)制正在模糊解釋器和編譯器之間的界限,或者說(shuō)是模糊了解釋型語(yǔ)言和編譯型語(yǔ)言的界限。

通過(guò)JVM和解釋器的概念澄清,似乎還是不明白為啥JVM就被稱為虛擬機(jī),JVM中有運(yùn)行的是字節(jié)碼,它可能直接被解釋執(zhí)行,也可能被再次編譯成目標(biāo)語(yǔ)言,Python中的解釋器也會(huì)先預(yù)編譯Python代碼為字節(jié)碼,再解釋執(zhí)行。那么到底有啥區(qū)別?

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

有人認(rèn)為虛擬機(jī)是和語(yǔ)言無(wú)關(guān)的,JVM為例,除了Java之外,Scala,Clojure,甚至Python借助于Jython工具,也可以運(yùn)行在JVM上,而沒聽說(shuō)什么語(yǔ)言能有Python解釋器解釋執(zhí)行,除了Python。

也有人從語(yǔ)言的類型上,Java為靜態(tài)類型的語(yǔ)言,而Python為動(dòng)態(tài)語(yǔ)言。這使得Java字節(jié)碼既可以被解釋執(zhí)行也可以被編譯成機(jī)器指令再執(zhí)行。而Python則復(fù)雜多了,它雖然讓程序員可以不去關(guān)注變量的類型,但解釋器不得不去推斷數(shù)據(jù)類型,這一定程度上影響性能。

還有觀點(diǎn)認(rèn)為解釋器是一個(gè)歷史遺留術(shù)語(yǔ),現(xiàn)代語(yǔ)言中虛擬機(jī)和解釋器的分界已經(jīng)很模糊甚至不存在。

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

 

責(zé)任編輯:王雪燕 來(lái)源: 51CTO博客
相關(guān)推薦

2010-02-24 10:49:11

Python運(yùn)行環(huán)境

2023-03-06 10:03:05

Java運(yùn)行機(jī)制

2020-10-21 08:16:37

Java基礎(chǔ)入門篇

2013-06-17 10:16:53

虛擬機(jī)虛擬化安全

2014-11-27 15:08:05

虛擬化動(dòng)態(tài)遷移

2018-05-09 10:55:06

微軟 Windows Linux

2012-05-18 10:22:23

2009-08-18 10:48:33

2010-06-11 14:50:48

虛擬機(jī)安裝openSU

2011-09-05 11:04:19

VMworld桌面虛擬化

2019-07-05 15:14:34

虛擬機(jī)WindowsWindows 10

2024-03-26 07:30:07

Java虛擬機(jī)源文件

2022-02-15 14:08:32

虛擬機(jī)Wasm瀏覽器

2012-09-28 13:09:41

Windows 8

2009-03-05 09:43:04

Mozilla手機(jī)瀏覽器Fennec

2010-07-26 09:02:38

2013-07-17 09:32:58

2018-11-22 12:07:37

Java虛擬機(jī)結(jié)構(gòu)

2013-08-16 11:17:35

虛擬桌面虛擬快照

2023-11-17 14:06:43

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩精品极品视频在线观看免费 | 亚洲综合二区 | 欧美一区二区免费电影 | 18性欧美 | 国产亚洲欧美在线视频 | 尤物在线视频 | 亚洲男人天堂网 | 亚洲国产一区在线 | 丝袜美腿一区 | 亚洲欧美中文日韩在线 | 国产免费a视频 | 色婷婷一区二区三区四区 | 国产日韩一区二区三免费高清 | 99精品免费久久久久久久久日本 | 午夜爽爽爽男女免费观看 | 夜夜精品视频 | 国产在线观看 | www.国产| 精品国产99 | 日韩精品在线一区 | 亚洲精品日本 | 亚洲精品电影在线观看 | 国产成人综合在线 | 91精品国产91久久久久游泳池 | 亚洲综合视频一区 | 免费精品| 日韩国产在线观看 | 鲁一鲁资源影视 | 久久综合久色欧美综合狠狠 | 精品久久精品 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 五月婷婷在线播放 | 亚洲成人www| 黑人巨大精品欧美黑白配亚洲 | 一区二区免费在线 | 欧美一级黑人aaaaaaa做受 | 91在线视频 | 午夜电影一区 | 色片在线观看 | 成人欧美一区二区三区黑人孕妇 | 日本一道本 |