如何理解Java的平臺獨立性?
首先我們要知道,Java既是編譯型語言也是解釋型語言,Java的平臺獨立性簡單說就是:Java是借助JVM實現跨平臺的,但JVM卻不是跨平臺的!
可能大家對上面說的不理解,我來具體和大家介紹一下。
我們先看下Java程序的執行過程:編寫好Java源代碼 》Java編譯器將源碼編譯成與平臺無關的字節碼(class)文件 》JVM對字節碼文件解釋執行。
Java從推出就遵守一個口號,“一次編譯 ,到處運行”也就是跨平臺。但是我們知道,由于系統不同,如果要實現跨平臺就必須打破系統間的差異,當時Sun公司為了解決這個問題,就借助“中間層”的思想開發出了“虛擬機”,這個“虛擬機”就是JVM(Java Virtual Machine),JVM給Java提供了運行時環境。
JVM底層是用C語言寫的,我們知道,C編譯器是和平臺有關的(多次編譯,多處運行),無法跨平臺!所以我們在官網下載的JVM是需要根據系統類型來下載的(Windows平臺上的JVM和Linux平臺上的JVM是不一樣的),JVM不是跨平臺的;JVM將字節碼翻譯成機器碼,機器碼只能在特定機器系統上運行。
而Java是通過不同的JVM來實現了跨平臺。