日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java虚拟机家族考

發(fā)布時(shí)間:2024/4/17 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java虚拟机家族考 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://www.infoq.com/cn/articles/jvm-family

說(shuō)起Java虛擬機(jī),許多Java程序員都會(huì)潛意識(shí)地把它與Sun[1] HotSpot虛擬機(jī)等同看待,也許還有一些程序員會(huì)注意到BEA JRockit和IBM J9,但大多數(shù)人對(duì)JVM的認(rèn)識(shí)都僅限于此了。

相關(guān)廠(chǎng)商內(nèi)容

支付寶與烏云分享架構(gòu)安全設(shè)計(jì)指南

西門(mén)子如何系統(tǒng)培養(yǎng)架構(gòu)師以及內(nèi)部系統(tǒng)架構(gòu)解密

相關(guān)贊助商

ArchSummit全球架構(gòu)師峰會(huì)報(bào)名啟動(dòng)!8折優(yōu)惠,6月30日截止!

從1996年初Sun發(fā)布的JDK 1.0中所包含的Sun Classic VM算起,Java虛擬機(jī)已經(jīng)發(fā)展了15個(gè)年頭,滄海桑田一瞬間,15年轉(zhuǎn)眼而過(guò),這期間曾經(jīng)涌現(xiàn)、湮滅過(guò)許多或經(jīng)典或優(yōu)秀或有特色的虛擬機(jī)實(shí)現(xiàn),在《Java虛擬機(jī)專(zhuān)欄》的第1篇中,我們先暫且把代碼與技術(shù)放下,一起來(lái)回顧一下Java虛擬機(jī)家族的發(fā)展軌跡和歷史變遷。

虛擬機(jī)始祖:Sun Classic / Exact VM

以今天的視角來(lái)看,Sun Classic VM的技術(shù)可能很原始,這款虛擬機(jī)的使命也早已終結(jié)。但僅憑它 “世界上第一款商用Java虛擬機(jī)”的頭銜,就足夠有令歷史有記住它的理由。

1996年1月23日,Sun發(fā)布JDK 1.0,Java語(yǔ)言首次擁有了商用的正式運(yùn)行環(huán)境,這個(gè)JDK中所帶的虛擬機(jī)就是Classic VM。這款虛擬機(jī)只能使用純解釋器方式來(lái)執(zhí)行Java代碼,如果要使用JIT編譯器那就必須進(jìn)行外掛,但是假如外掛了JIT編譯器,JIT編譯器就完全接管了虛擬機(jī)的執(zhí)行系統(tǒng),解釋器便不再工作了。用戶(hù)在這款虛擬機(jī)上執(zhí)行java –version命令,將會(huì)看到類(lèi)似下面這行的輸出:

java version "1.2.2" Classic VM (build JDK-1.2.2-001, green threads, sunwjit)

其中的“sunwjit”就是Sun提供的外掛編譯器,其他類(lèi)似的外掛編譯器還有Symantec JIT和shuJIT等。由于解釋器和編譯器不能配合工作,這就意味著如果要使用編譯器執(zhí)行,編譯器就不得不為對(duì)每一個(gè)方法,每一行代碼都進(jìn)行編譯,而無(wú)論它們執(zhí)行的頻率是否具有編譯的價(jià)值。基于程序響應(yīng)時(shí)間的壓力,這些編譯器根本不敢應(yīng)用編譯耗時(shí)稍高的優(yōu)化技術(shù),因此這個(gè)階段的虛擬機(jī)即使用了JIT編譯器輸出本地代碼,執(zhí)行效率也和傳統(tǒng)的C/C++程序有很大差距,“Java語(yǔ)言很慢”的形象就是在這時(shí)候開(kāi)始在用戶(hù)心中樹(shù)立起來(lái)的。

Sun的虛擬機(jī)團(tuán)隊(duì)努力去解決Classic VM所面臨的各種問(wèn)題,提升運(yùn)行效率,在JDK 1.2時(shí),曾在Solaris平臺(tái)上發(fā)布過(guò)一款名為Exact VM的虛擬機(jī),它的執(zhí)行系統(tǒng)已經(jīng)具備現(xiàn)代高性能虛擬機(jī)雛形:如兩級(jí)即時(shí)編譯器、編譯器與解釋器混合工作模式等。Exact VM因它使用準(zhǔn)確式內(nèi)存管理(Exact Memory Management,也可以叫Non-Conservative/Accurate Memory Management)而得名,即虛擬機(jī)可以知道內(nèi)存中某個(gè)位置的數(shù)據(jù)具體是什么類(lèi)型。譬如內(nèi)存中有一個(gè)32bit的整數(shù)123456,它到底是一個(gè)reference類(lèi)型指向123456的內(nèi)存地址還是一個(gè)數(shù)值為123456的整數(shù),虛擬機(jī)將有能力分辨出來(lái),這樣才能在GC的時(shí)候準(zhǔn)確判斷堆上的數(shù)據(jù)是否還可能被使用。由于使用了準(zhǔn)確式內(nèi)存管理,Exact VM可以?huà)仐壍粢郧癈lassic VM基于handler的對(duì)象查找方式(原因是GC后對(duì)象將可能會(huì)被移動(dòng)位置,如果地址為123456的對(duì)象移動(dòng)到654321,在沒(méi)有明確信息表明內(nèi)存中哪些數(shù)據(jù)是reference的前提下,那虛擬機(jī)是不敢把內(nèi)存中所有為123456的值改成654321的,所以要使用句柄來(lái)保持reference值的穩(wěn)定),這樣每次定位對(duì)象都少了一次間接查找的開(kāi)銷(xiāo),提升執(zhí)行性能。

雖然Exact VM的技術(shù)相對(duì)Classic VM來(lái)說(shuō)先進(jìn)了許多,但是它命運(yùn)顯得十分英雄氣短,在商業(yè)應(yīng)用上只存在了很短暫的時(shí)間就被更為優(yōu)秀的HotSpot VM所取代,甚至還沒(méi)有來(lái)得及發(fā)布Windows和Linux平臺(tái)下的商用版本。而Classic VM的生命周期則相對(duì)長(zhǎng)了許多,它在JDK 1.2之前是Sun JDK中唯一的虛擬機(jī),在JDK 1.2時(shí),它與HotSpot VM并存,但默認(rèn)是使用Classic VM(用戶(hù)可用java –hotspot參數(shù)切換至HotSpot VM),而在JDK 1.3時(shí),HotSpot VM成為默認(rèn)虛擬機(jī),它仍作為虛擬機(jī)的“備用選擇”發(fā)布(使用java –classic參數(shù)切換),直到JDK 1.4的時(shí)候,Classic VM才正式退出商用虛擬機(jī)的歷史舞臺(tái),與Exact VM一起進(jìn)入了Sun Labs Research VM之中。

武林盟主:Sun HotSpot VM

HotSpot VM相信所有Java程序員都知道,它是Sun JDK和OpenJDK中所帶的虛擬機(jī),也是目前使用范圍最廣的Java虛擬機(jī)。但不一定所有人都知道的是,這個(gè)目前看起來(lái)“血統(tǒng)純正”的虛擬機(jī)在最初并非由Sun公司開(kāi)發(fā),而是由一家名為“Longview Technologies”的小公司設(shè)計(jì)的;甚至這個(gè)虛擬機(jī)最初并非是為Java語(yǔ)言而開(kāi)發(fā)的,它來(lái)源于Strongtalk語(yǔ)言,而虛擬機(jī)中相當(dāng)多的技術(shù)又是來(lái)源于一款支持Self語(yǔ)言實(shí)現(xiàn)“達(dá)到C語(yǔ)言50%以上的執(zhí)行效率”的目標(biāo)而設(shè)計(jì)的虛擬機(jī),Sun公司注意到了這款虛擬機(jī)在JIT編譯上有許多優(yōu)秀的理念和實(shí)際效果,在1997年收購(gòu)了Longview Technologies公司,從而獲得了HotSpot VM。

HotSpot VM既繼承了Sun之前兩款商用虛擬機(jī)的優(yōu)點(diǎn)(如前面提到的準(zhǔn)確式內(nèi)存管理),也有許多自己新的技術(shù)優(yōu)勢(shì),如它名稱(chēng)中的HotSpot指的就是它的熱點(diǎn)代碼探測(cè)技術(shù)(其實(shí)Exact VM之中也有與HotSpot幾乎一樣的熱點(diǎn)探測(cè),為了Exact VM和HotSpot VM哪個(gè)成為Sun主要支持的產(chǎn)品VM,在Sun公司內(nèi)部還大吵過(guò)一場(chǎng),HotSpot打敗Exact并不能算技術(shù)上的勝利),HotSpot VM的熱點(diǎn)代碼探測(cè)能力可以通過(guò)執(zhí)行計(jì)數(shù)器找出最具優(yōu)編譯價(jià)值的代碼,然后通知JIT編譯器以方法為單位進(jìn)行編譯。如果一個(gè)方法被頻繁調(diào)用,或方法中回邊(回邊是指程序向后跳轉(zhuǎn)的行為)次數(shù)很多,將會(huì)分別觸發(fā)標(biāo)準(zhǔn)編譯和OSR(棧上替換)編譯動(dòng)作。通過(guò)編譯器與解釋器恰當(dāng)?shù)貐f(xié)同工作,可以在最優(yōu)化的程序響應(yīng)時(shí)間與最佳執(zhí)行性能中取得平衡,而且無(wú)需等待本地代碼輸出才能執(zhí)行程序,即時(shí)編譯的時(shí)間壓力也相對(duì)減小,這樣有助于引入更多的代碼優(yōu)化技術(shù),輸出質(zhì)量更高的本地代碼。

2006年的JavaOne大會(huì)上,Sun宣布最終會(huì)把Java開(kāi)源,并在隨后的一年,陸續(xù)地將JDK的各個(gè)部分(其中當(dāng)然也包括了HotSpot VM)在GPL協(xié)議下公開(kāi)了源碼,并在此基礎(chǔ)上建立了OpenJDK。這樣,HotSpot VM便成為了Sun JDK和OpenJDK兩個(gè)實(shí)現(xiàn)極度接近的JDK項(xiàng)目的共同虛擬機(jī)。

在2008年和2010年,Oracle分別收購(gòu)了BEA和Sun公司,這樣Oracle就同時(shí)擁有了這個(gè)星球上最優(yōu)秀的兩款Java虛擬機(jī):JRockit VM和HotSpot VM。Oracle宣布在不久的將來(lái)(大約應(yīng)在JDK 8的時(shí)候)會(huì)完成這兩款虛擬機(jī)的整合工作,使之優(yōu)勢(shì)互補(bǔ)。整合的方式大致上是在HotSpot的基礎(chǔ)上,移植JRockit的優(yōu)秀特性,譬如使用JRockit的垃圾回收器與MissionControl服務(wù),使用HotSpot的JIT編譯器與混合的運(yùn)行時(shí)系統(tǒng)。當(dāng)HotSpot吸收了JRockit的全部功力之后,能否一統(tǒng)虛擬機(jī)的江湖,成為真正的武林盟主,我們拭目以待。

小數(shù)派:Sun Mobile-Embedded VM / Meta-Circular VM

Sun公司所研發(fā)的虛擬機(jī)可不僅有前面介紹到的服務(wù)器、桌面領(lǐng)域的商用虛擬機(jī),除此之外,Sun面對(duì)移動(dòng)和嵌入式市場(chǎng),也發(fā)布過(guò)虛擬機(jī)產(chǎn)品,另外還有一類(lèi)虛擬機(jī),在設(shè)計(jì)之初就沒(méi)有抱著商用的目的,僅僅是用于研究、驗(yàn)證某種技術(shù)和觀(guān)點(diǎn),又或者是作為一些規(guī)范的標(biāo)準(zhǔn)實(shí)現(xiàn)。這些虛擬機(jī)對(duì)于大部分不從事相關(guān)領(lǐng)域開(kāi)發(fā)的Java程序員來(lái)說(shuō)可能比較陌生,Sun公司發(fā)布的其他Java虛擬機(jī)有:

  • KVM

    KVM中的K是“Kilobyte”的意思,它強(qiáng)調(diào)簡(jiǎn)單,輕量,高度可移植,但是運(yùn)行速度比較慢。在A(yíng)ndrod、iOS等智能手機(jī)操作系統(tǒng)出現(xiàn)前曾經(jīng)在手機(jī)平臺(tái)上得到非常廣泛應(yīng)用。

  • CDC/CLDC HotSpot

    CDC/CLDC全稱(chēng)是Connected(Limited)Device Configuration,在JSR-139/JSR-218規(guī)范中進(jìn)行定義,它希望在手機(jī)、電子書(shū)、PDA等設(shè)備上建立統(tǒng)一的Java編程接口,而CDC HotSpot VM和CLDC HotSpot VM則是它們的一組參考實(shí)現(xiàn)。CDC/CLDC是整個(gè)Java ME的重要支柱,但從目前Android和Apple iOS二分天下的移動(dòng)數(shù)字設(shè)備市場(chǎng)看來(lái),在這個(gè)領(lǐng)域中,Sun的虛擬機(jī)所面臨的局面遠(yuǎn)不如服務(wù)器和桌面領(lǐng)域樂(lè)觀(guān)。

  • Squawk VM

    Squawk VM是由Sun開(kāi)發(fā),運(yùn)行于Sun SPOT(Sun Small Programmable Object Technology,一種手持的Wifi設(shè)備),也曾經(jīng)運(yùn)用于Java Card。這是一個(gè)Java代碼比重很高的嵌入式虛擬機(jī)實(shí)現(xiàn),其中諸如類(lèi)加載器、字節(jié)碼驗(yàn)證器、垃圾收集器、解釋器、編譯器和線(xiàn)程調(diào)度都是Java語(yǔ)言本身所完成的,僅僅靠C語(yǔ)言來(lái)編寫(xiě)設(shè)備I/O和必要的本地代碼。

  • JavaInJava

    JavaInJava是Sun公司1997年~1998年間所研發(fā)的一個(gè)實(shí)驗(yàn)室性質(zhì)的虛擬機(jī),從名字就可以看出,它試圖以Java語(yǔ)言來(lái)實(shí)現(xiàn)Java語(yǔ)言本身的運(yùn)行環(huán)境,既所謂的“元循環(huán)”(Meta-Circular,是指使用語(yǔ)言自身來(lái)實(shí)現(xiàn)其運(yùn)行環(huán)境)。它必須運(yùn)行在另外一個(gè)宿主虛擬機(jī)之上,內(nèi)部沒(méi)有JIT編譯器,代碼只能以解釋模式執(zhí)行。在上世紀(jì)末主流Java虛擬機(jī)都未能很好解決性能問(wèn)題的時(shí)代,開(kāi)發(fā)這種項(xiàng)目,其執(zhí)行速度大家可想而知。

  • Maxine VM

    Maxine VM和上面的JavaInJava非常相似,它也是一個(gè)幾乎全部以Java代碼實(shí)現(xiàn)(只有用于啟動(dòng)JVM的加載器使用C語(yǔ)言編寫(xiě))的元循環(huán)Java虛擬機(jī)。這個(gè)項(xiàng)目于2005年開(kāi)始,到現(xiàn)在仍然在發(fā)展之中,比起JavaInJava,Maxine VM就顯得“靠譜”很多,它有先進(jìn)的JIT編譯器和垃圾收集器(但沒(méi)有解釋器),可在宿主模式或獨(dú)立模式下執(zhí)行,其執(zhí)行效率已經(jīng)接近了HotSpot Client VM的水平。

百家爭(zhēng)鳴:BEA JRockit / IBM J9 VM

前面介紹了Sun公司的各種虛擬機(jī),除了Sun公司以外,其他組織、公司也研發(fā)過(guò)不少虛擬機(jī)實(shí)現(xiàn),其中規(guī)模最大、最著名的就是BEA和IBM公司了。

JRockit VM曾經(jīng)號(hào)稱(chēng)“世界上速度最快的Java虛擬機(jī)”(廣告詞,貌似J9 VM也這樣說(shuō)過(guò)),它是BEA公司在2002年從Appeal Virtual Machines公司收購(gòu)獲得的虛擬機(jī)。BEA將其發(fā)展為一款專(zhuān)門(mén)為服務(wù)器硬件和服務(wù)端應(yīng)用場(chǎng)景高度優(yōu)化的虛擬機(jī),由于專(zhuān)注于服務(wù)端應(yīng)用,它可以不太關(guān)注于程序啟動(dòng)速度,因此JRockit內(nèi)部不包含解析器實(shí)現(xiàn),全部代碼都靠即時(shí)編譯器編譯后執(zhí)行。除此之外,JRockit的垃圾收集器和MissionControl服務(wù)套件等部分的實(shí)現(xiàn),在眾多Java虛擬機(jī)中也一直處于領(lǐng)先水平。

IBM J9 VM并不是IBM公司唯一的Java虛擬機(jī),不過(guò)是目前IBM主力發(fā)展的Java虛擬機(jī),J9原本是內(nèi)部開(kāi)發(fā)代號(hào),正式名稱(chēng)是“IBM Technology for Java Virtual Machine”,簡(jiǎn)稱(chēng)IT4J,只是這個(gè)名字太拗口了一點(diǎn),普及程度不如J9。J9 VM最初是由IBM Ottawa實(shí)驗(yàn)室一個(gè)SmallTalk的虛擬機(jī)擴(kuò)展而來(lái)的,當(dāng)時(shí)這個(gè)虛擬機(jī)有一個(gè)bug是因?yàn)?k值定義錯(cuò)誤引起,工程師們花了很長(zhǎng)時(shí)間終于發(fā)現(xiàn)并解決了這個(gè)錯(cuò)誤,此后這個(gè)版本的虛擬機(jī)就被稱(chēng)為K8了,后來(lái)擴(kuò)展出支持Java的虛擬機(jī)就被稱(chēng)為J9了。與BEA JRockit專(zhuān)注于服務(wù)端應(yīng)用不同,IBM J9的市場(chǎng)定位與Sun HotSpot比較接近,它是一款設(shè)計(jì)上從服務(wù)端到桌面應(yīng)用再到嵌入式都全面考慮的多用途虛擬機(jī),J9的開(kāi)發(fā)目的是作為IBM公司各種Java產(chǎn)品的執(zhí)行平臺(tái),它的主要市場(chǎng)在和IBM產(chǎn)品(如IBM WebSphere等)搭配以及在IBM AIX和z/OS這些平臺(tái)上部署Java應(yīng)用。

除了BEA和IBM外,其他一些大公司如HP、SAP等也號(hào)稱(chēng)有自己的專(zhuān)屬JDK和虛擬機(jī),但是它們是通過(guò)從Sun購(gòu)買(mǎi)版權(quán)的方式獲得的,并非自己獨(dú)立開(kāi)發(fā)。

最終兵器:Azul VM/BEA Liquid VM

我們平時(shí)所提及的“高性能Java虛擬機(jī)”一般是指HotSpot、JRockit、J9這類(lèi)在通用平臺(tái)上運(yùn)行的商用虛擬機(jī),但其實(shí)Azul VM和BEA Liquid VM這類(lèi)特定硬件平臺(tái)專(zhuān)有的虛擬機(jī)才是“高性能”的最終兵器。

Azul VM是Azul Systems 公司在HotSpot基礎(chǔ)上進(jìn)行大量改進(jìn),運(yùn)行于A(yíng)zul Systems 公司的專(zhuān)有硬件Vega系統(tǒng)上的Java虛擬機(jī),每個(gè)Azul VM實(shí)例都可以管理至少數(shù)十個(gè)CPU和數(shù)百GB的內(nèi)存的硬件資源,并提供在巨大內(nèi)存范圍內(nèi)實(shí)現(xiàn)可控的GC時(shí)間的垃圾收集器、為專(zhuān)有硬件優(yōu)化的線(xiàn)程調(diào)度等優(yōu)秀特性。在2010年,Azul開(kāi)始從硬件轉(zhuǎn)向軟件,發(fā)布了自己的Zing JVM,可以在通用x86平臺(tái)上提供接近于Vega系統(tǒng)的特性。

Liquid VM是BEA公司開(kāi)發(fā)的,可以直接運(yùn)行在自家Hypervisor系統(tǒng)上的JRockit VM的虛擬化版本,Liquid VM不需要操作系統(tǒng)的支持,或者說(shuō)它自己本身實(shí)現(xiàn)了一個(gè)專(zhuān)用操作系統(tǒng)的必要功能,如文件系統(tǒng)、網(wǎng)絡(luò)支持等。由虛擬機(jī)越過(guò)通用操作系統(tǒng)直接控制硬件可以獲得很多好處,如在線(xiàn)程調(diào)度時(shí),不需要再進(jìn)行內(nèi)核態(tài)/用戶(hù)態(tài)的切換等,這樣可以最大限度地發(fā)揮硬件的能力,提升Java程序的執(zhí)行性能。

挑戰(zhàn)者:Apache Harmony / Google Android Dalvik VM

這節(jié)介紹的Harmony VM和Dalvik VM只能稱(chēng)作“虛擬機(jī)”,而不能稱(chēng)作“Java虛擬機(jī)”,但是這兩款虛擬機(jī)(以及所代表的技術(shù)體系)對(duì)最近三年的Java世界產(chǎn)生了非常大的影響和挑戰(zhàn),甚至有悲觀(guān)的評(píng)論家認(rèn)為成熟的Java生態(tài)系統(tǒng)有崩潰的可能。

Apache Harmony是一個(gè)Apache軟件基金會(huì)旗下以Apache License協(xié)議開(kāi)源的實(shí)際兼容于JDK 1.5和JDK 1.6的Java程序運(yùn)行平臺(tái),這個(gè)介紹相當(dāng)拗口。它包含自己的虛擬機(jī)和Java庫(kù),用戶(hù)可以在上面運(yùn)行Eclipse、Tomcat、Maven等常見(jiàn)的Java程序,但是……它沒(méi)有通過(guò)TCK認(rèn)證,所以我們不得不用那么一長(zhǎng)串拗口的語(yǔ)言來(lái)介紹它,而不能用一句“Apache的JDK”來(lái)說(shuō)明。如果一個(gè)公司要宣布自己的運(yùn)行平臺(tái)“兼容于Java語(yǔ)言”,那就必須要通過(guò)TCK(Technology Compatibility Kit)的兼容性測(cè)試,Apache基金會(huì)曾要求Sun公司提供TCK的使用授權(quán),但是一直遭到拒絕,直到Oracle收購(gòu)了Sun公司之后,雙方關(guān)系越鬧越僵,最終導(dǎo)致Apache憤然退出JCP(Java Community Process)組織,這是近代Java社區(qū)最嚴(yán)重的一次分裂。

在Sun把JDK開(kāi)源形成OpenJDK之后,Apache Harmony開(kāi)源的優(yōu)勢(shì)被極大地削弱,甚至連Harmony項(xiàng)目的最大參與者IBM公司也宣布辭去Harmony項(xiàng)目管理主席的職位,參與OpenJDK項(xiàng)目的開(kāi)發(fā)。雖然Harmony沒(méi)有真正大規(guī)模商業(yè)運(yùn)用過(guò),但是它的許多代碼(基本上是Java庫(kù)部分的代碼)被吸納進(jìn)IBM的JDK7實(shí)現(xiàn)以及Google Android SDK之中,尤其是對(duì)Android的發(fā)展起了很大推動(dòng)作用。

說(shuō)到Android,這個(gè)時(shí)下最熱門(mén)的移動(dòng)數(shù)碼設(shè)備平臺(tái)在最近3年間的發(fā)展所取得的成果已經(jīng)遠(yuǎn)遠(yuǎn)超越了Java ME在過(guò)去十多年所獲得的成果,Android讓Java語(yǔ)言真正走進(jìn)了移動(dòng)數(shù)碼設(shè)備領(lǐng)域,只是走的并非Sun公司原本想象的那一條路。

Dalvik VM是Android平臺(tái)的核心組成部分之一,它名字來(lái)源于冰島一個(gè)名為Dalvik的小漁村。Dalvik VM并不是一個(gè)Java虛擬機(jī),它沒(méi)有遵循Java虛擬機(jī)規(guī)范,不能直接執(zhí)行Java的class文件,使用寄存器架構(gòu)而不是JVM中常見(jiàn)的棧架構(gòu)。但是它與Java卻又有著千絲萬(wàn)縷的聯(lián)系,它執(zhí)行dex(Dalvik Executable)文件可以通過(guò)class文件轉(zhuǎn)化而來(lái),使用Java語(yǔ)法編寫(xiě)應(yīng)用程序,可以直接使用大部分的Java API等等。目前Dalvik VM隨著Android一起處于迅猛發(fā)展階段,在A(yíng)ndroid 2.2中已提供即時(shí)編譯器實(shí)現(xiàn),執(zhí)行性能有了很大的提高。

沒(méi)有成功,但并非失敗:Mircosoft JVM及其他

在十幾年的Java虛擬機(jī)發(fā)展歷程中,除去上面介紹那些被大規(guī)模商業(yè)應(yīng)用過(guò)的Java虛擬機(jī)外,還有許多虛擬機(jī)是不為人知或者曾經(jīng)絢麗過(guò)但最終湮滅的。我們以其中Mircorsoft公司的JVM來(lái)介紹一下。

也許Java程序員聽(tīng)起來(lái)可能會(huì)覺(jué)得驚訝,微軟曾經(jīng)是Java技術(shù)的鐵桿支持者。在Java語(yǔ)言誕生的初期(1996年~1998年,以JDK1.2發(fā)布之前為分界),它的主要的應(yīng)用之一是在瀏覽器中運(yùn)行Java Applets程序,微軟為了在IE3中支持Java Applets應(yīng)用而開(kāi)發(fā)了自己的Java虛擬機(jī),雖然這款虛擬機(jī)只有Windows平臺(tái)的版本(這很正常吧?),但卻是當(dāng)時(shí)Windows下性能最好的Java虛擬機(jī),它在1997和1998連續(xù)兩年獲得了《PC Magazine》雜志的“編輯選擇獎(jiǎng)”。但好景不長(zhǎng),在1997年10月,Sun公司正式以侵犯商標(biāo)、不正當(dāng)競(jìng)爭(zhēng)等罪名控告微軟,在隨后對(duì)微軟公司的壟斷調(diào)查之中,這款虛擬機(jī)也曾作為證據(jù)之一被呈送法庭。這場(chǎng)官司的結(jié)果是微軟賠償2000萬(wàn)美金給Sun,承諾終止其Java虛擬機(jī)的發(fā)展,并逐步在產(chǎn)品中移除Java虛擬機(jī)相關(guān)功能。

我們?cè)囅胍幌?#xff0c;如果當(dāng)年Sun沒(méi)有起訴微軟公司,微軟繼續(xù)保持著對(duì)Java技術(shù)的熱情,那Java的世界會(huì)變得更好還是更壞?.NET技術(shù)是否會(huì)發(fā)展起來(lái)?但歷史是沒(méi)有如果的。其他在本文中沒(méi)有介紹到的Java虛擬機(jī)還包括有(當(dāng)然,應(yīng)該還有很多筆者所不知道的):

  • JamVM:http://jamvm.sourceforge.net/
  • cacaovm:http://www.cacaovm.org/
  • SableVM:http://www.sablevm.org/
  • Kaffe:http://www.kaffe.org/
  • Jelatine JVM:http://jelatine.sourceforge.net/
  • NanoVM:http://www.harbaum.org/till/nanovm/index.shtml
  • MRP:http://mrp.codehaus.org/
  • Moxie JVM:http://moxie.sourceforge.net/
  • Jikes RVM:http://jikesrvm.org/

參考資料

本文撰寫(xiě)時(shí)主要參考了以下資料:

  • http://en.wikipedia.org/wiki/Java_virtual_machine
  • http://wikis.sun.com/display/HotSpotInternals/Home
  • http://rednaxelafx.iteye.com/blog/858009

?

[1] Sun與BEA分別在2010、2008年被Oracle公司收購(gòu),由于本文涉及到大量歷史事件,為了避免混亂,依然保留Sun和BEA的名稱(chēng)。

?

總結(jié)

以上是生活随笔為你收集整理的Java虚拟机家族考的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人免费黄色大片 | 国产毛片视频网站 | 男同互操gay射视频在线看 | 日韩一级av毛片 | 国内精品91 | 欧洲性开放大片 | 国产伦精品一区二区三区妓女 | 日韩黄色网址 | av在线免费观看一区 | 天天摸日日摸狠狠添 | 五月天激情视频在线观看 | 九九热在线视频播放 | 欧美精品videos另类 | 毛片毛片毛片毛片毛片 | 亚洲精品久久久久久宅男 | 熟妇高潮一区二区三区 | 天天干一干 | 国产黄免费 | 免费看av在线 | 成人午夜在线免费观看 | 激情欧美一区二区三区 | 98av视频 | jzzijzzij亚洲成熟少妇在线播放 狠狠躁日日躁夜夜躁2022麻豆 | 日本毛片网站 | 黄视频网站在线 | 国产精品外围 | 国产亚洲精品精品国产亚洲综合 | 99网站 | 免费爱爱视频 | 免费av日韩 | 狼干综合 | 黄色裸体网站 | 亚洲国产成人精品女人久久 | 人妻在线日韩免费视频 | 美女毛片 | 亚洲影视一区 | 亚洲一区二区精品在线观看 | 欧美人与动牲交a欧美精品 欧美三级在线看 | 女人av在线 | 猫咪av在线 | 在线免费观看国产精品 | 激情 小说 亚洲 图片 伦 | 亚洲av成人无码网天堂 | 在线aa | 一区二区中文字幕在线观看 | av资源导航 | h片网站在线观看 | 日韩人妻精品一区二区三区视频 | 婷婷爱爱| 久热在线 | av毛片在线播放 | 四虎av影视 | 女人一级一片30分 | 国产伦精品一区二区三区照片 | 久久精品专区 | 永久免费看mv网站入口78 | 午夜精品久久久久久久久 | 欧美成人一级视频 | 亚洲在线第一页 | 日韩白浆 | 日韩精品一区二区av | 午夜av免费看 | 福利一区福利二区 | 日韩人妻精品一区二区三区视频 | 福利国产片| 小早川怜子久久精品中文字幕 | 亚洲欧美激情图片 | xxxxxx黄色 | 激情文学综合网 | 色欲亚洲Av无码精品天堂 | 嫩草99| 亚洲天堂视频在线观看 | 日韩淫视频 | 日产久久久久久 | 男女插孔视频 | jizz国产在线观看 | 午夜第一页 | 黄色片在线免费观看 | 亚洲免费视频网 | 国产成人精品影视 | 日本免费高清 | 久久久久亚洲av片无码v | 成人激情视频在线观看 | 96av在线视频 | 国产二区自拍 | 久久avav | 色黄大色黄女片免费中国 | 国产一区导航 | 亚洲色图欧洲色图 | 性生交生活片1 | 蜜桃aaa| 思思久久久 | 性xxxxx大片免费视频 | 日韩欧美精品 | 久久亚洲一区二区三区四区五区 | 天天添天天射 | 色婷婷久久久亚洲一区二区三区 | www三级免费 | 国产传媒一级片 |