首先拿python和C說明,python運行速度慢,和C程序相比很是慢,由於Python是解釋型語言,你的代碼在執行時會一行一行地被python解釋器翻譯成CPU能理解的機器碼,這個翻譯過程很是耗時,因此很慢。而C/C++程序是編譯型語言,運行前直接編譯成CPU能執行的機器碼,因此很是快。java
可是Java呢?Java運行前須要編譯,.java不通過編譯就沒法執行,因此有人就說Java是編譯型的。python
可是編譯後的.class文件是字節碼,並非機器能直接執行的機器碼,它是解釋運行在JVM上的,因此也有人說它是解釋型的。操作系統
對於C和C++,它們通過一次編譯以後,能夠由操做系統直接執行,因此它們是編譯型語言。而Java不同,它首先由編譯器編譯成.class(字節碼)文件,而後在經過JVM從.class文件中讀一行解釋執行一行,因此它是解釋型的語言。也正是因爲java對於多種不一樣的操做系統有不一樣的JVM,因此實現了真正意義上的跨平臺。翻譯
1)Java語言的編譯-->解釋-->運行過程3d
2)JVMblog
Java兼顧解釋型和編譯型的特色編譯器