Java語言是解釋型語言?Java語言是編譯型語言?學習
編譯執行:經過編譯器將源代碼編譯爲機器碼(機器能識別的代碼指令),而後機器直接執行編譯器
解釋執行:指由解釋器直接執行,不須要編譯成機器語言編譯
拿作飯來比喻,源代碼就像食材:class
-
解釋執行像吃火鍋,一邊煮一邊吃,煮菜的人至關於解釋器的地位(源代碼一邊解釋,一邊執行)技術
-
編譯執行像炒菜吃,先把菜炒好再吃,炒菜的人至關於編譯器的地位(源代碼一次性編譯,直接執行)語言
食材徹底能夠作火鍋吃,也能夠作菜吃,不管怎麼吃都只是吃的一種方式罷了di
一樣的,不管解釋執行仍是編譯執行,其實只是源代碼的一種執行方式而已文件
回到咱們的問題自己:時間
說Java是解釋型語言,或編譯型語言其實都是很荒謬的思考
- 這就像說蘿蔔必須作火鍋吃,不能炒菜吃同樣
正確的說法是Java某種特定實現是解釋型的或者是編譯型的
- 拿Java來講,編譯獲得.class文件的步驟沒法忽視,某些JVM內部實現也不是解釋執行的,而是編譯
- C語言是不少人根深蒂固的編譯型語言,但實際上C語言也有它的解釋器實現
因此,所謂的編譯型和解釋型並非語言的特性,而是語言實現的特性
啓示:
- 不要固執於概念
- 不少概念隨着時間和技術的發展,會變得不適用
- 學習技術要多思考,不要人云亦云