自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

什么是虛擬機?你知道嗎?

云計算 虛擬化
誰都沒想到 Sun 公司技術(shù)如此的強大,卻在之后的歲月里逐漸走向隕落,因為不懂銷售和運營,導(dǎo)致公司財務(wù)逐漸出現(xiàn)虧損,在 2009 年,Oracle 公司以現(xiàn)金方式收購 Sun 公司,交易價格達(dá) 74 億美元。

一、摘要

眾所周知,Java 經(jīng)過多年的發(fā)展,已經(jīng)從一門單純的計算機編程語言,發(fā)展成了一套成熟的軟件解決方案。從互聯(lián)網(wǎng)到企業(yè)平臺,Java 是目前使用最廣泛的編程語言。

以下這段內(nèi)容是來自 Java 的官方介紹!

從筆記本電腦到數(shù)據(jù)中心,從游戲控制臺到科學(xué)超級計算機,從手機到互聯(lián)網(wǎng),Java 無處不在!

無論是是互聯(lián)網(wǎng)公司還是傳統(tǒng)的企業(yè),在研發(fā)數(shù)字化平臺系統(tǒng)時,世界上絕大部分的公司基本上都會首選采用 Java 來開發(fā),以助力企業(yè)的數(shù)字化轉(zhuǎn)型和生產(chǎn)效率的提升,原因就不多說了,安全、穩(wěn)定、高性能、跨平臺等等,其實還有一個很大的優(yōu)勢:好招人,哈哈哈~~

而 Java 之所以如此有魅力,不僅限于它優(yōu)秀的程序語言設(shè)計,其中還有一個很重要的原因得益于它的虛擬機平臺設(shè)計,通過它的虛擬機可以輕松實現(xiàn)應(yīng)用程序跨平臺運行,實現(xiàn)“一次編寫,到處運行”的目標(biāo),并且還可以取得不錯的運行效率。

二、Java 簡介

在介紹虛擬機之前,我們還是簡單的回顧一下 Java 的發(fā)展故事。

Java 最早是由 SUN 公司的一個小工程師團隊在上個世紀(jì) 90 年代初開發(fā)的一種編程語言,其中詹姆斯·高斯林是項目負(fù)責(zé)人(人稱 Java 之父),編程語言最初被命名為 Oak,以他們的辦公室外的橡樹而命名,后來因為 Oak 已經(jīng)被人注冊了,因此重新改名成 Java。

在此,我們附上一張 Java 之父的光輝圖片!

圖片圖片

當(dāng)時的目標(biāo)是將其用于開發(fā)數(shù)字有線電視行業(yè)的嵌入式應(yīng)用程序,例如機頂盒、智能電視等數(shù)字設(shè)備,實現(xiàn)無障礙的運行。結(jié)果推出以后,市場沒啥反響。4 年后,技術(shù)小組不得不解散。

但也就在此時,互聯(lián)網(wǎng)剛剛崛起,恰巧這時 MarkArdreesen 開發(fā)的 Mosaic 和 Netscape 啟發(fā)了 Oak 項目組成員,他們利用 Java 編寫了 HotJava 瀏覽器,HotJava 擁有了在頁面中運行 Java 代碼的能力,可以無障礙的運行在各個電腦設(shè)備上,這個效果得到了 Sun 公司首席執(zhí)行官 ScottMcNealy 的支持,觸發(fā)了 Java 進軍 Internet 的決心。

這在當(dāng)時引起了不小的轟動,人們從中似乎看到了互聯(lián)網(wǎng)未來該有的樣子,一時間,Java 受到了眾多廠商和開發(fā)者的追捧。于是趁熱打鐵,Sun 在 1996 年正式發(fā)布了 JDK1.0,當(dāng)時最主要的十個操作系統(tǒng)廠商宣布,將在它們的系統(tǒng)中支持 Java 程序的運行,從此在互聯(lián)網(wǎng)高速發(fā)展中大殺四方。

Java 之所以能在互聯(lián)網(wǎng)發(fā)展中獲得廣泛的開發(fā)者支持,一個很重要的原因就是它可以實現(xiàn)“一次編寫,到處運行”的效果,極大的省去了軟件開發(fā)工作量,能實現(xiàn)這種效果主要得益于 Java 的架構(gòu)理念設(shè)計。

像 C、C++ 等編程語言,代碼是直接編譯成機器碼執(zhí)行,雖然很快,但是不同的平臺(x86、ARM等) CPU 的指令集也不同,每次開發(fā)一個應(yīng)用程序需要編譯出每一種平臺的對應(yīng)機器碼,非常麻煩。

Java 則不同,它會將代碼編譯成一種“字節(jié)碼”,它類似于抽象的 CPU 指令,然后虛擬機負(fù)責(zé)加載字節(jié)碼,根據(jù)不同的平臺編譯成對應(yīng)的機器碼并執(zhí)行,這樣就可以實現(xiàn)了“一次編寫,到處運行”的效果。

圖片圖片

當(dāng)然,對于虛擬機,需要針對每個平臺分別開發(fā),為了保證不同平臺、不同公司開發(fā)的虛擬機都能正確執(zhí)行 Java 字節(jié)碼,SUN 公司制定了一系列的 Java 虛擬機規(guī)范。從實踐的角度來看,虛擬機的兼容性做得非常好,低版本的 Java 字節(jié)碼完全可以正常運行在高版本的虛擬機上。

整個 JDK 內(nèi)部結(jié)構(gòu),可以用如下圖來概括(圖片來自于廖雪峰的Java介紹)

圖片圖片

JDK、JRE 和 JVM 三者之間的關(guān)系,可以用如下內(nèi)容來簡要描述。

  • JDK(Java Development Kit):指的是 Java 語言的軟件開發(fā)工具包,包括編譯器、調(diào)試器、Java API 類庫、Java 虛擬機等內(nèi)容,通常用于開發(fā)環(huán)境
  • JRE(Java Runtime Environment):指的是 Java 運行時環(huán)境,包括 Java API 類庫、Java 虛擬機等內(nèi)容,通常用于運行 Java 應(yīng)用程序,通常用于生產(chǎn)環(huán)境
  • JVM(Java Virtual Machine):指的是 Java 虛擬機,用于在不同的平臺上執(zhí)行 Java 應(yīng)用程序

可以清晰的看到,JVM 是 Java 應(yīng)用程序能實現(xiàn)跨平臺運行的核心。因此,了解和學(xué)習(xí) JVM 相關(guān)的知識,有助于開發(fā)者對 Java 相關(guān)技術(shù)有著更全面的認(rèn)識。

在操作系統(tǒng)的命令行,輸入java -version,即可看到當(dāng)前 JDK 采用的是哪種版本的虛擬機。

圖片圖片

三、虛擬機簡介

說起 Java 虛擬機,許多開發(fā)者可能首先會想到  HotSpot 虛擬機,正如上文的截圖部分。

實際上 Java 虛擬機除了 HotSpot 之外,還有 Sun Classic VM、Exact VM、BEA JRockit VM、IBM J9 VM等等,虛擬機的發(fā)展過程,可以用百花齊放這四個字來概括。

3.1、Sun Classic VM

在 1996 年,Sun 發(fā)布 JDK 1.0 時,其中自帶的虛擬機就是 Classic VM。這款虛擬機使用的是純解釋器的方式來執(zhí)行 Java 代碼,簡單的說就是邊解釋邊運行代碼,并非像現(xiàn)在這樣通過編譯器的方式來執(zhí)行代碼(先編譯、后執(zhí)行)。在 Sun Classic 虛擬機中,解釋器與編譯器無法共同存在,因此 Java 應(yīng)用程序執(zhí)行速度上肯定快不起來,只能說夠用。

在 1998 年,Sun 在發(fā)布 JDK 1.2 時,同時也公布了一款名為 Exact VM 的虛擬機,這款虛擬機嘗試解決了 Classic VM 遇到的所有問題。它的執(zhí)行系統(tǒng)解決了 Classic VM 存在的解釋器和編譯器無法同時工作的問題,同時還具備了一些現(xiàn)代高性能處理器的特性,如:兩級即時編譯、準(zhǔn)確式內(nèi)存管理等。

但可惜的是,這款虛擬機一直沒有真正被大規(guī)模使用過,此時 Sun Classic VM 依然作為默認(rèn)的 Java 虛擬機。

3.2、HotSpot VM

在 2000 年,Sun 在發(fā)布 JDK 1.3 時,公布將 HotSpot VM 作為默認(rèn)的 Java 虛擬機,也就是大家廣為流傳的 Java 虛擬機。

實際上,這個虛擬機并不是由 Sun 公司原生開發(fā)的,而是由一個叫 Longview Technologies 公司開發(fā)的,Sun 公司注意到了這款虛擬機在 JIT 編譯上的許多優(yōu)秀成果,于 1997 年收購了 Longview Technologies 公司,從而獲得了 HotSpot VM 的所有權(quán)。

HotSpot VM 不僅僅有前面說到兩款虛擬機的優(yōu)點,也有許多自己的新技術(shù),例如:熱點探測技術(shù)。熱點探測技術(shù)指的是通過執(zhí)行計數(shù)器找出最具優(yōu)化價值的代碼,然后通知 JIT 編譯器以方法為單位進行深度優(yōu)化編譯。

其實 Exact VM 中也有類似的技術(shù),但最終還是選擇了 HotSpot 作為默認(rèn)的虛擬機。

HotSpot VM 作為默認(rèn)的 Java 虛擬機之后,直到現(xiàn)在,依然是我們最常用的虛擬機,可見 HotSpot VM 的生命力之頑強!

3.3、BEA JRockit  / IBM J9 VM

前面說的是 Sun 公司研發(fā)的虛擬機,但除了 Sun 公司之外,其他組織、公司也研發(fā)過不少的虛擬機實現(xiàn),其中最著名的就是 BEA 公司的 JRockit VM 和 IBM 公司的 J9 VM 了。

JRockit VM 是除 HotSpot 之外另一款響當(dāng)當(dāng)?shù)奶摂M機,BEA 公司在 2002 年收購的了此虛擬機的開發(fā)商。這款虛擬機在相當(dāng)一段時間里獲稱世界上速度最快的 Java 虛擬機,它是一款專注于服務(wù)器端應(yīng)用的虛擬機,并且它的垃圾收集算法相比其它所有虛擬機表現(xiàn)更佳;此外,其提供的 MissionControl 服務(wù)套件也十分強大。

IBM 公司的 J9 VM 則是一款比較通用的虛擬機,其定位應(yīng)用于從服務(wù)端到桌面應(yīng)用,再到嵌入式的多用途虛擬機。IBM 公司開發(fā) J9 VM 的目的是將其作為 IBM 公司各種 Java 產(chǎn)品的執(zhí)行平臺。稍有不同的是,IBM J9 VM 都只能跟 IBM 產(chǎn)品一起使用,雖然不存在技術(shù)限制,但是需要單獨的商業(yè)許可證。

J9 VM 的性能水平大致跟 HotSpot VM 是一個檔次的,在一些場景下,有時 HotSpot VM 快些,有時 J9 VM 快些。

3.4、其它 JVM

HotSpot、JRockit 和 J9 這三個虛擬機,曾經(jīng)在很長的時間并稱三大主流 JVM,可以說是 Java 虛擬機發(fā)展史上比較耀眼的部分。除此之外,其實還有各種各樣的小范圍使用的虛擬機。

例如 Azul VM 和 BEA Liquid VM 的專用商業(yè)虛擬機,性能非常強悍,可以管理至少數(shù)十個 CPU 和數(shù)百 GB 的內(nèi)存資源,還提供在巨大內(nèi)存范圍內(nèi)實現(xiàn)可控 GC 時間的垃圾收集器等等,這些虛擬機只運行在特定硬件平臺,因此要求也比較高。

此外還有許許多多其他的虛擬機存在,例如:Apache Harmony、Google Android Dalvik VM、Mircosoft JVM 等等,都在各自領(lǐng)域發(fā)揮作用。

3.5、Oralce

誰都沒想到 Sun 公司技術(shù)如此的強大,卻在之后的歲月里逐漸走向隕落,因為不懂銷售和運營,導(dǎo)致公司財務(wù)逐漸出現(xiàn)虧損,在 2009 年,Oracle 公司以現(xiàn)金方式收購 Sun 公司,交易價格達(dá) 74 億美元。

此前,Oracle 公司在 2008 年收購了 BEA 公司,獲得了 JRocket VM 的所有權(quán);這意味著 JRockit 與 HotSpot 同屬于 Oracle 所有。

實際上,現(xiàn)在 JDK1.8 的 HotSpot VM 已經(jīng)是以前的 HotSpot VM 與 JRockit VM 的合并版,也就是傳說中的“HotRockit”,只是產(chǎn)品里名字還是叫 HotSpot VM。

后續(xù)的 JVM 發(fā)展,相信會越來越好,我們拭目以待!

四、小結(jié)

本文主要圍繞 Java 的發(fā)展歷史,對虛擬機的誕生歷史做了一次知識總結(jié),在后續(xù)的文章中,我們會對 JVM 相關(guān)知識進行總結(jié)和分享,如果有描述不對的地方,歡迎大家留言指出,不勝感激!

五、參考

1.https://www.liaoxuefeng.com/wiki/1252599548343744/1255876875896416

2.https://www.cnblogs.com/xrq730/p/4826691.html

3.https://www.cnblogs.com/chanshuyi/p/jvm_serial_02_the_history_of_jvm.html

責(zé)任編輯:武曉燕 來源: Java極客技術(shù)
相關(guān)推薦

2023-12-20 08:23:53

NIO組件非阻塞

2022-11-28 00:04:17

2024-01-15 12:16:37

2024-07-30 08:22:47

API前端網(wǎng)關(guān)

2024-11-08 09:48:38

異步編程I/O密集

2024-03-19 08:01:54

服務(wù)熔斷軟件設(shè)計模式微服務(wù)

2024-06-27 10:51:28

生成式AI領(lǐng)域

2023-07-11 00:12:05

2023-01-04 11:39:45

2023-09-03 17:05:20

虛擬機

2023-03-06 16:38:30

SQL數(shù)據(jù)庫

2024-04-30 09:02:48

2022-12-06 10:04:59

5G網(wǎng)絡(luò)C波段

2025-02-18 08:11:17

2024-05-30 09:55:05

人工智能AGI領(lǐng)域

2024-06-11 09:02:30

2024-12-04 08:40:19

2024-06-20 08:06:30

2024-08-20 08:29:55

2024-04-07 00:00:03

點贊
收藏

51CTO技術(shù)棧公眾號