Java程序的跨平臺(tái)性

我們一般將CPU處理器和操作系統(tǒng)的整體叫做平臺(tái)螟蒸。CPU種類繁多盒使,如Intel、AMD七嫌、PowerPC等等少办。不同的CPU有不同的特定的指令集來(lái)計(jì)算和控制計(jì)算機(jī)系統(tǒng)。操作系統(tǒng)是用戶和計(jì)算機(jī)之間交互的界面軟件抄瑟,不同操作系統(tǒng)支持不同的CPU凡泣,即不同操作系統(tǒng)支持不同的CPU指令集枉疼,但不一定一種操作系統(tǒng)唯一支持一種指令集皮假。像Windows、Linux骂维、Mac都支持Intel和AMD的CPU指令集惹资。

如果我們要開發(fā)程序,則我們需要確認(rèn)平臺(tái)是什么——CPU的類型即指令類型和操作系統(tǒng)航闺。如果用標(biāo)準(zhǔn)C開發(fā)程序褪测,使用不同的編譯器后的可執(zhí)行文件是可以在對(duì)應(yīng)的平臺(tái)上運(yùn)行的。比如使用GCC編譯潦刃,生成可執(zhí)行文件可以在Linux上運(yùn)行侮措。使用特定編譯器編譯的程序只能在對(duì)應(yīng)的平臺(tái)上運(yùn)行,編譯器是與平臺(tái)相關(guān)的乖杠,編譯后的文件也是與平臺(tái)相關(guān)的分扎。這種執(zhí)行方式稱作編譯執(zhí)行,它把源程序與特定平臺(tái)的編譯器一次性編譯成平臺(tái)相關(guān)的機(jī)器碼胧洒。優(yōu)點(diǎn)是執(zhí)行速度快畏吓,缺點(diǎn)是無(wú)法跨平臺(tái)

接著我們看看Java程序的跨平臺(tái)性是怎么實(shí)現(xiàn)的——Java程序被編譯成一種中間語(yǔ)言卫漫,再由JVM將Java字節(jié)碼(.class文件)翻譯成機(jī)器語(yǔ)言菲饼。Java源程序編譯的結(jié)果是生成Java字節(jié)碼列赎,不同平臺(tái)下生成的Java字節(jié)碼是相同的包吝,但由JVM翻譯成的機(jī)器碼卻不一樣派哲。再次強(qiáng)調(diào)芭届,跨平臺(tái)的是Java程序持隧,因?yàn)槠浜竺鏁?huì)被與平臺(tái)不相關(guān)的編譯器編譯成與平臺(tái)不相關(guān)的中間碼屡拨。JVM不是跨平臺(tái)的呀狼。不同平臺(tái)下需要安裝不同的JVM。

總結(jié)一下,無(wú)論我們使用什么語(yǔ)言編程祖乳,最終要在設(shè)備上運(yùn)行,那一定要被翻譯成機(jī)器能識(shí)別執(zhí)行的機(jī)器碼隙赁。C、C++這種編譯性語(yǔ)言厚掷,在不同的編譯器下直接編譯特定的機(jī)器碼,在特定的平臺(tái)下運(yùn)行抡爹。而Java則屬于先編譯后解釋型的語(yǔ)言欧穴。與平臺(tái)不相關(guān)的編譯器編譯成了與平臺(tái)不相關(guān)的.class文件,然后再由JVM解釋成其平臺(tái)下的機(jī)器碼调缨。就是由于多出的這個(gè)機(jī)制,讓Java程序看起來(lái)與眾不同湾蔓。

有人會(huì)說(shuō)咸包,不同平臺(tái)下使用的機(jī)器碼是不同的烂瘫,所以不同平臺(tái)下的JVM一般不同,這樣才翻譯成不同的機(jī)器碼,這跟C要被翻譯成不同的機(jī)器碼有什么本質(zhì)不同嗎籍琳?怎么多了個(gè)中間碼就跨平臺(tái)了势誊。如果你還冒出這個(gè)疑惑查近,那說(shuō)明你沒(méi)有真正明白跨平臺(tái)指代的對(duì)象勋锤。當(dāng)提出的“跨平臺(tái)性”等概念時(shí)候矮冬,我們一定要緊抓其指的對(duì)象到底是什么胎署。不然云里霧里恢筝,基礎(chǔ)不扎實(shí),人容易心虛不自信巨坊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撬槽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子趾撵,更是在濱河造成了極大的恐慌侄柔,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件占调,死亡現(xiàn)場(chǎng)離奇詭異暂题,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)究珊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門薪者,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人苦银,你說(shuō)我怎么就攤上這事啸胧。” “怎么了幔虏?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵纺念,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我想括,道長(zhǎng)陷谱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮烟逊,結(jié)果婚禮上渣窜,老公的妹妹穿的比我還像新娘。我一直安慰自己宪躯,他們只是感情好乔宿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著访雪,像睡著了一般详瑞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上臣缀,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天坝橡,我揣著相機(jī)與錄音,去河邊找鬼精置。 笑死计寇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脂倦。 我是一名探鬼主播番宁,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼狼讨!你這毒婦竟也來(lái)了贝淤?” 一聲冷哼從身側(cè)響起柒竞,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤政供,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后朽基,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體布隔,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年稼虎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了衅檀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霎俩,死狀恐怖哀军,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情打却,我是刑警寧澤杉适,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站柳击,受9級(jí)特大地震影響猿推,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一蹬叭、第九天 我趴在偏房一處隱蔽的房頂上張望藕咏。 院中可真熱鬧,春花似錦秽五、人聲如沸孽查。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)卦碾。三九已至,卻和暖如春起宽,著一層夾襖步出監(jiān)牢的瞬間洲胖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工坯沪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绿映,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓腐晾,卻偏偏與公主長(zhǎng)得像叉弦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子藻糖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 從三月份找實(shí)習(xí)到現(xiàn)在淹冰,面了一些公司,掛了不少巨柒,但最終還是拿到小米樱拴、百度、阿里洋满、京東晶乔、新浪、CVTE牺勾、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,207評(píng)論 11 349
  • JVM驻民、Java編譯器和Java解釋器 java解釋器就是把在java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼)解釋成為具體...
    光劍書架上的書閱讀 8,732評(píng)論 1 15
  • 這篇文章是我之前翻閱了不少的書籍以及從網(wǎng)絡(luò)上收集的一些資料的整理翻具,因此不免有一些不準(zhǔn)確的地方,同時(shí)不同JDK版本的...
    高廣超閱讀 15,564評(píng)論 3 83
  • 一只邪惡的怪物回还,化為人形裆泳,為了獲得最美味的人肉,它混進(jìn)村子懦趋,收養(yǎng)了一個(gè)孤兒晾虑。悲傷與憤怒會(huì)使人的肉不美味,太胖太瘦也...
    孟浪之言閱讀 294評(píng)論 0 0
  • 作為一個(gè)職業(yè)人必須要思考的四個(gè)問(wèn)題: 1、你是誰(shuí)帜篇? 要清晰明白自己到底是一個(gè)什么樣的人糙捺?你擁有什么,你缺乏什么笙隙?人...
    有夢(mèng)的人在啟航閱讀 380評(píng)論 0 0