Java語言和Python語言是解釋型語言還是編譯型語言
解釋性語言定義:
程序不需要編譯,在運行程序的時候才翻譯,每個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就需要逐行翻譯一次,效率比較低。
現代解釋性語言通常把源程序編譯成中間代碼,然後用解釋器把中間代碼一條條翻譯成目標機器代碼,一條條執行。
編譯性語言定義:
編譯性語言寫的程序在被執行之前,需要一個專門的編譯過程,把程序編譯成爲機器語言的文件,比如exe文件,以後要運行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe文件),因爲翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程序執行效率高。
Java語言運行過程:
JAVA的第一道工序是javac編譯,目標文件是BYTECODE(字節碼);BYTECODE由JVM逐條解釋執行。參見下圖:
Python語言運行過程:
Python解釋器將源代碼轉換爲字節碼,然後把編譯好的字節碼轉發到Python虛擬機(PVM)中進行執行。參見下圖:
一般認爲,Java、Python是解釋型語言,只是不那麼純粹。也可以認爲它們是先編譯再解釋的編程語言。並非所有高級語言都是要麼是編譯型語言,要麼就是解釋型語言。