Java虛擬機器(JVM)和Python直譯器有什麼區別?
在Java中始終使用"虛擬機器"時,很少會讀到Python"虛擬機器"。
兩者都解釋位元組碼(一個是解釋Java 一個是解釋Python); 為什麼一個叫虛擬機器,另一個叫直譯器(Interpreter)?
注意 這裡的"虛擬機器"是指處理虛擬機器,而不是系統虛擬機器(例如Qemu或Virtualbox)。程式虛擬機器是隻是提供一般程式設計環境的程式-程式可以程式設計。
下面詳細解釋以下兩種叫法的起源:
Java具有直譯器和虛擬機器,而Python具有虛擬機器機器和口譯員。之所以"虛擬機器"更多Java中的通用術語,而"直譯器"是Python中更常見的術語與兩種語言之間的主要區別有關:靜態型別(Java)與動態型別(Python)。
在本文中,"型別"是指原始資料型別-表示以下項的記憶體儲存大小的型別資料。
我們來仔細想一想Java程式 Java要求程式設計師指定每個變數的原始資料型別。但是Python不這樣 它可以去猜,雖然這比較接近自然語言 但是這使得編譯Python程式的時候 編譯器的構造更加複雜(因為在執行每個操作之前確定暫停的附加任務涉及的每個變數或資料結構的原始資料型別操作)
所以 直譯器是Python的首選術語 因為他必須暫停並檢查資料型別。
但是我們要注意的是 雖然兩者都用了位元組碼一次 但是並非所有的位元組碼都是平等的。事實上 他只是中間語言的通用術語,介於我們寫的code的語言(高階語言:Python,Java)和計算機能看懂的語言(二進位制碼)之間,這種語言由編譯器/直譯器來使用。 Java位元組碼包含有關原始資料型別的資訊,而Python位元組碼則沒有。所以從某種意義上來說 Python虛擬機器比Java虛擬機器要慢。
總結一下 其實兩者本質相同 都是用來解釋對應的高階語言的。
相關文章
- 憑什麼別的虛擬機器叫虛擬機器,Python的叫直譯器?虛擬機Python
- 什麼是Python直譯器?和Python IDE有什麼區別?PythonIDE
- 伺服器、雲伺服器和虛擬主機有什麼區別?伺服器
- 【譯】使用 Python 編寫虛擬機器直譯器Python虛擬機
- Python IDE和直譯器有什麼區別?Python入門教程PythonIDE
- Java虛擬機器(JVM)Java虛擬機JVM
- 雲虛擬主機和雲伺服器有什麼區別?雲虛擬主機能用來幹什麼?伺服器
- Golang實現JAVA虛擬機器-指令集和直譯器GolangJava虛擬機
- 物理機和虛擬機器有什麼不同虛擬機
- 虛擬機器、容器與沙盒技術有什麼區別?虛擬機
- VPS和虛擬主機有什麼區別
- Java虛擬機器是什麼?Java虛擬機
- 伺服器和虛擬主機有何區別伺服器
- 容器和虛擬機器到底有啥區別?虛擬機
- Java基礎:Java虛擬機器(JVM)Java虛擬機JVM
- Docker容器和虛擬機器區別Docker虛擬機
- JVM 虛擬機器JVM虛擬機
- JVM虛擬機器JVM虛擬機
- Java虛擬機器1:什麼是JavaJava虛擬機
- 雲虛擬主機與雲伺服器有什麼區別,怎麼選?伺服器
- java虛擬機器和Dalvik虛擬機器Java虛擬機
- JVM虛擬機器和類載入器JVM虛擬機
- Java JVM——5.Java虛擬機器棧JavaJVM虛擬機
- JVM(JAVA虛擬機器介紹) (轉)JVMJava虛擬機
- JVM(JAVA虛擬機器介紹)(轉)JVMJava虛擬機
- Docker和虛擬機器有什麼不同?哪個好?Docker虛擬機
- 在C,C++,java和python執行時直譯器和編譯器的區別C++JavaPython編譯
- JVM 虛擬機器 GCJVM虛擬機GC
- 伺服器的獨立機器和虛擬機器的區別伺服器虛擬機
- React 的虛擬 DOM 和 Vue 的虛擬 DOM 有什麼區別?ReactVue
- JVM內幕:Java虛擬機器詳解JVMJava虛擬機
- 虛擬主機和獨立伺服器有什麼不同伺服器
- 虛擬機器包 OVF和OVA的區別虛擬機
- 雲伺服器和雲虛擬主機有哪些區別呢伺服器
- Dalvik虛擬機器、Java虛擬機器與ART虛擬機器虛擬機Java
- Java和Python是什麼?有什麼區別?JavaPython
- JVM虛擬機器詳解JVM虛擬機
- JVM虛擬機器基礎JVM虛擬機