1、java跨平臺是同一java源碼被編譯后得到的字節(jié)碼文件可以在不同的操作系統(tǒng)上運行
例如:一個java程序,編譯得到class后可以在windows,linux,mac等等的操作系統(tǒng)上運行
Java先編譯后解釋。
同一個.class文件在不同的虛擬機會得到不同的機器指令
(Windows和Linux的機器指令不同)但是最終執(zhí)行的結果卻是相同的
注意:Windows和Linux的機器指令不同。大概因為操作系統(tǒng)需要硬件支持,所以屬于自己的指令(區(qū)別于cpu的指令)。
2、以前它有一個口號:一次編譯、到處運行。
就是說代碼編譯好之后得到一個字節(jié)碼而不是傳統(tǒng)的機器碼的程序,當我們運行在不同的操作系統(tǒng)上的時候,每個操作系統(tǒng)都有相應的 Java 虛擬機來解釋這些字節(jié)碼,因為跟操作系統(tǒng)平臺相關的部分由 Java 虛擬機來負責,這就是所謂的跨平臺。對比一下傳統(tǒng)的程序,一個 Windows 上的 exe 沒辦法運行在 Linux 上,反過來也是一樣。
另外,Java 使用的包名和類路徑也是為跨平臺提供支持的,包名的層次結構就是與目標樹和jar內的目錄結構對應的,因此程序只看到一個邏輯的層次結構,真實運行時我們則是在命令行給出 -classpath 參數(shù),這時的 classpath 參數(shù)則是與操作系統(tǒng)平臺相關的,但要知道這與代碼本身沒有關系,代碼依然是跨平臺的。