Java是可以跨平臺的編程語言,那我們首先得知道什么是平臺,我們把CPU處理器與操作系統(tǒng)的整體叫平臺。 CPU大家都知道,如果計算機(jī)是人,那CPU就是人的大腦,它既負(fù)責(zé)思維運(yùn)算,又負(fù)責(zé)身體各部件的命令控制。CPU的種類很多,除去我們熟知的Intel與AMD外,還有比如上面說到的SUN的Sparc,比如IBM的PowerPC等等,這些各個公司生產(chǎn)的CPU使用或相同或不同的指令集。指令集就是cpu中用來計算和控制計算機(jī)系統(tǒng)的一套指令的集合。指令集又分為精簡指令集(RISC)與復(fù)雜指令集(CISC),每種cpu都有其特定的指令集。開發(fā)程序,首先要知道該程序在什么CPU上運(yùn)行,也就是要知道CPU所使用的指令集。 下面說操作系統(tǒng),操作系統(tǒng)是充當(dāng)用戶和計算機(jī)之間交互的界面軟件,不同的操作系統(tǒng)支持不同的CPU,嚴(yán)格意義上說是不同的操作系統(tǒng)支持不同CPU的指令集。例如 windows和liunx都支持Intel和AMD的復(fù)雜指令集,但并不支持PowerPC所使用的精簡指令集,而早期的MAC電腦使用的是PowerPC處理器,所以也就無法在MAC下直接安裝windows,直到05年MAC改用了Intel的CPU,才使在MAC下安裝windows成為可能。但問題來了,原來的MAC 操作系統(tǒng)也只支持PowerPC,在Intel上也不能安裝,怎么辦?所以蘋果公司也得重寫自己的MAC操作系統(tǒng)以支持這種變化。最后總結(jié)下,我們要知道,不同的操作系統(tǒng)支持不同的CPU指令集,現(xiàn)在的windows,liunx,mac,solaris都支持Intel與AMD的CPU指令集。 有了上面的鋪墊,旺旺老師就要告訴大家,如果您要開發(fā)程序,首先應(yīng)該確定:1,CPU類型,也就是指令集類型;2,操作系統(tǒng);我們把這種軟硬件的結(jié)合叫平臺。也可以說“平臺= CPU OS”。又因為現(xiàn)在主流的操作系統(tǒng)都支持主流的CPU,所以有時也把操作系統(tǒng)稱為平臺。 知道什么是平臺,我們看Java跨平臺原理。 2、Java跨平臺原理 首先看一張與C語言有關(guān)的圖: ![]() 如果您有過C的開發(fā)經(jīng)歷,這張圖看起來將非常輕松。我們知道,只要是用標(biāo)準(zhǔn)C開發(fā)的程序,使用不同的編譯器編譯后的可執(zhí)行文件是可以在對應(yīng)平臺運(yùn)行的,比如windows可以使用VC編譯,那編譯后的exe文件就可以在windows下運(yùn)行;liunx下可以使用GCC編譯,生成的可執(zhí)行文件就可以在Liunx上運(yùn)行。 到這里請大家思考一個問題:“VC編譯的exe能在Liunx上運(yùn)行嗎?” 答案肯定是否定的。使用特定編譯器編譯的程序只能在對應(yīng)的平臺運(yùn)行,這里也可以說編譯器是與平臺相關(guān)的,編譯后的文件也是與平臺相關(guān)的。我們說的語言跨平臺是編譯后的文件跨平臺,而不是源程序跨平臺,如果是源程序,任何一門語言都是跨平臺的語言了。這個如果您不明白,看下面一個案例: 比 如火星真的有外星人(并且毋庸置疑,火星是韓國人的,火星文也一定是韓國人發(fā)明的),就像我們觀察螞蟻一樣,火星人默默的觀察著我們,有一天,當(dāng)人類做的 什么事情讓火星人實在是看不下去了(比如旺旺老師的書出版了你不買,哈哈,嘔吐中,沒關(guān)系,吐啊吐啊就吐習(xí)慣了),所以決定來地球教育我們,但有一個問 題,火星人只會說火星文,地球人理解不了,怎么辦?。空曳g唄(也許非主流可以幫忙,玩笑)!由中文翻譯把火星文翻譯為中文,英文翻譯把火星文翻譯為英文 等等等等,但這樣問題來了,中文翻譯翻譯的東西只有中國人能聽懂,美國人法國人根本不明白,英文翻譯翻譯的文章中國人也不明白,也就是語言不能跨平臺。 那上例中,火星文就是C語言,各個國家是平臺,中文翻譯英文翻譯就是對應(yīng)平臺的編譯器,編譯后的文章就是可執(zhí)行文件。雖然源文章火星文是與平臺無關(guān)的,但翻譯器是與特定國家相關(guān)的,翻譯后的文章也是與特定國家相關(guān)的。 接下來思考另一個問題“怎么讓火星文跨平臺呢?” 火星人想到了地球上有世界語,于是首先把自己的文章翻譯為世界語;世界語各國人當(dāng)然看不懂,沒關(guān)系,火星人又給每個國家配備了一個世界語到本地語的翻譯,這 樣火星文只要翻譯一次(翻譯為世界語),就可以到各個國家運(yùn)行了。還要記住,這個過程火星人要提供兩個組件,第一是火星文到世界語的翻譯,第二是世界語到 對應(yīng)本地語言的翻譯。如下圖: |
|