日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
憑啥Java運(yùn)行環(huán)境稱虛擬機(jī) Python只能稱解釋器

本博文出自博客cnn237111博主,有任何問題請進(jìn)入博主頁面互動討論!

創(chuàng)新互聯(lián)公司專注于麻江企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計,商城建設(shè)。麻江網(wǎng)站建設(shè)公司,為麻江等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站建設(shè),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


文章標(biāo)題:憑啥Java運(yùn)行環(huán)境稱虛擬機(jī) Python只能稱解釋器
網(wǎng)站路徑:http://www.dlmjj.cn/article/cddeisp.html