什麼是平臺java
Java是能夠跨平臺的編程語言,那麼首先咱們須要知道什麼是平臺,一般咱們把CPU與操做系統的總體稱爲平臺。編程
CPU你們都知道,是計算機的大腦,它既負責思惟運算,又負責計算機中各類零部件的命令控制。CPU的種類很是多,目前咱們使用的主流的CPU是由Inter和AMD公司生產的各類CPU。這些CPU使用相同或不一樣的指令集,指令集就是CPU中用來計算和控制計算機系統的一套指令的集合。指令集又分爲精簡指令集和複雜指令集,每種CPU都有其特定的指令集。開發應用程序,首先要知道程序在什麼CPU上運行,也就是要知道CPU所使用的指令集。oracle
操做系統是充當用戶和計算機之間交互的軟件,不一樣的操做系統支持不一樣的CPU,嚴格意義上來講是不一樣的操做系統支持不一樣的CPU指令集。例如早期的Windows和Linux都支持Inter和AMD的複雜指令集,但並不支持PowerPC所使用的精簡指令集,而早期的MAC電腦(蘋果電腦)使用的都是PowerPC處理器,因此也就沒法在MAC下直接安裝Windows,而macOS也沒法安裝在Inter和AMD的平臺之上。目前全部主流的操做系統(Windows、Linux、MAC等)都支持Inter與AMD的指令集。編程語言
又由於如今主流的操做系統都支持主流的CPU,因此有時也把操做系統稱爲平臺。其實想要知道Java到底跨了什麼平臺,只須要在Java的官方網站www.oracle.com上下載Java時提供的平臺版本就能夠知道Java到底跨了什麼平臺了。咱們會在本書後面的內容中介紹如何下載Java,以及是什麼緣由能夠經過上面的方式來判斷Java跨平臺的。工具
Java跨平臺原理網站
從上面的講解中你們瞭解了什麼是平臺,如今爲你們介紹一下Java的跨平臺原理,首先咱們來看一種與C語言從源代碼到可執行程序過程的相關的圖片(圖2.2)。操作系統
圖2 C語言從源代碼到可執行程序的過程3d
若是有過C語言開發經驗,圖2看起來將很是輕鬆。咱們知道用標準C開發的程序,使用不一樣的編譯器編譯後的可執行文件是能夠在對應平臺運行的,好比Windows可使用VC來編譯C源代碼,編譯後的文件就能夠在Windows系統下運行;Linux下可使用GCC編譯器,生成的可執行文件就能夠在Linux上運行,可是這裏有一個問題就是使用VC編譯的C程序能夠在Linux上運行麼?答案確定是否認的,若是想將Windows平臺下的程序拿到Linux平臺下運行,須要使用Linux平臺下的編譯器再次編譯程序的源代碼生成可執行文件才能運行。由於C語言編譯後的可執行文件是沒法跨平臺的,使用特定的編譯器編譯C程序只能在對應的平臺上運行,這裏也能夠說編譯器是與平臺相關的,編譯後的文件也是與平臺相關的。咱們說的語言跨平臺是編譯後的可執行文件跨平臺,而不是源代碼程序跨平臺(若是說源程序是跨平臺的,那麼任何一門語言都是跨平臺語言)。blog
下面咱們經過圖2.3來看Java語言是怎麼樣解決可執行文件跨平臺的。圖片
圖3 Java語言從源代碼到可執行程序的過程
經過圖3咱們能夠發現,在Java源代碼和各個平臺之間多了一個編譯器和一個字節碼文件,而後各個平臺經過解釋器來解釋執行這個字節碼文件。那麼中間這個編譯器和字節碼文件究竟是什麼呢?原來,Java語言爲了作到跨平臺,經過將Java源代碼通過一個編譯器,編譯成一個與平臺無關的字節碼文件,而後各個平臺中相應的解釋器就能夠加載、解釋並執行這個字節碼文件了(各個平臺的解釋器解釋同一個字節碼文件會生成不一樣的可是運行效果相同的機器指令,Windows和Linux的機器指令就不一樣,可是運行同一個Java程序的結果是沒有區別),即在一種平臺下編寫的應用程序無需修改也能夠在其它平臺上運行了,可是要求該平臺必須擁有對應版本的解釋器才能夠。
一般使用Java語言編寫的源代碼文件以.java爲後綴,使用Java提供的編譯工具javac將源代碼編譯後生成的字節碼文件以.class爲後綴,使用Java提供的運行工具java便可運行字節碼文件。