日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

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

生活随笔

當(dāng)前位置: 首頁(yè) >

【深入Java虚拟机JVM 01】Java发展与展望概述

發(fā)布時(shí)間:2025/3/20 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【深入Java虚拟机JVM 01】Java发展与展望概述 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

1.1 概述

1.2 Java技術(shù)體系

1.3 Java發(fā)展史

1.4 展望Java技術(shù)的未來(lái)

1.4.1 模塊化

1.4.2 混合語(yǔ)言

1.4.3 多核并行

1.4.4 進(jìn)一步豐富語(yǔ)法

1.4.5 64位虛擬機(jī)


說(shuō)明:文章所有內(nèi)容均摘自《深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐(第二版)》

1.1 概述

Java的優(yōu)點(diǎn):

  • 它擁有一門(mén)結(jié)構(gòu)嚴(yán)謹(jǐn)、面向?qū)ο蟮木幊陶Z(yǔ)言之
  • 它擺脫了硬件平臺(tái)的束縛,實(shí)現(xiàn)了“一次編寫(xiě),到處運(yùn)行”的理想;
  • 它提供了一個(gè)相對(duì)安全的內(nèi)存管理和訪問(wèn)機(jī)制,避免了絕大部分的內(nèi)存泄露和指針越界問(wèn)題;
  • 它實(shí)現(xiàn)了熱點(diǎn)代碼檢測(cè)和運(yùn)行時(shí)編譯及優(yōu)化,這使得Java應(yīng)用能隨著運(yùn)行時(shí)間的增加而獲得更高的性能;
  • 它有一套完善的應(yīng)用程序接口,還有無(wú)數(shù)來(lái)自商業(yè)機(jī)構(gòu)和開(kāi)源社區(qū)的第三方類(lèi)庫(kù)來(lái)幫助它實(shí)現(xiàn)各種各樣的功能

?

1.2 Java技術(shù)體系

Sun官方所定義的Java技術(shù)體系包括以下幾個(gè)組成部分:

  • Java程序設(shè)計(jì)語(yǔ)言
  • 各種硬件平臺(tái)上的Java虛擬機(jī)
  • Class文件格式
  • Java API類(lèi)庫(kù)
  • 來(lái)自商業(yè)機(jī)構(gòu)和開(kāi)源社區(qū)的第三方Java類(lèi)庫(kù)

把Java程序設(shè)計(jì)語(yǔ)言、Java虛擬機(jī)、Java API類(lèi)庫(kù)這三部分統(tǒng)稱(chēng)為JDK(Java Development Kit),JDK是用于支持Java程序開(kāi)發(fā)的最小環(huán)境。

可以把Java API類(lèi)庫(kù)中的JavaSE API子集和Java虛擬機(jī)這兩部分統(tǒng)稱(chēng)為JRE(Java Runtime Environment),JRE是支持Java程序運(yùn)行的標(biāo)準(zhǔn)環(huán)境。

按照J(rèn)ava技術(shù)關(guān)注的重點(diǎn)業(yè)務(wù)領(lǐng)域來(lái)劃分,Java技術(shù)體系可以分為4個(gè)平臺(tái),分別為:

  • Java Card:支持一些Java小程序(Applets)運(yùn)行在小內(nèi)存設(shè)備(如智能卡)上的平臺(tái)。
  • Java ME(Micro Edition):支持Java程序運(yùn)行在移動(dòng)終端(手機(jī)、PDA)上的平臺(tái),對(duì)Java API有所精簡(jiǎn),并加入了針對(duì)移動(dòng)終端的支持,這個(gè)版本以前稱(chēng)為J2ME。
  • Java SE(Standard Edition):支持面向桌面級(jí)應(yīng)用(如Windows下的應(yīng)用程序)的Java平臺(tái),提供了完整的Java核心API,這個(gè)版本以前稱(chēng)為J2SE。
  • Java EE(Enterprise Edition):支持使用多層架構(gòu)的企業(yè)應(yīng)用(如ERP、CRM應(yīng)用)的Java平臺(tái),除了提供Java

?

1.3 Java發(fā)展史

已經(jīng)在學(xué)JVM了,框定對(duì)Java已經(jīng)有比較深入的了解了。這里就不在贅述Java歷史,只給一張Java技術(shù)發(fā)展時(shí)間線。

?

1.4 展望Java技術(shù)的未來(lái)

在2005年,Java語(yǔ)言誕生10周年的SunOne技術(shù)大會(huì)上,Java語(yǔ)言之父James ?Gosling做了一場(chǎng)題為“Java技術(shù)下一個(gè)十年”的演講。

1.4.1 模塊化

模塊化是解決應(yīng)用系統(tǒng)與技術(shù)平臺(tái)越來(lái)越復(fù)雜、越來(lái)越龐大問(wèn)題的一個(gè)重要途徑。無(wú)論是開(kāi)發(fā)人員還是產(chǎn)品最終用戶(hù),都不希望為了系統(tǒng)中一小塊的功能而不得不下載、安裝、部署及維護(hù)整套龐大的系統(tǒng)。站在整個(gè)軟件工業(yè)化的高度來(lái)看,模塊化是建立各種功能的標(biāo)準(zhǔn)件的前提。最近幾年OSGi技術(shù)的迅速發(fā)展、各個(gè)廠商在JCP中對(duì)模塊化規(guī)范的激烈斗爭(zhēng)?,都能充分說(shuō)明模塊化技術(shù)的迫切和重要。

1.4.2 混合語(yǔ)言

當(dāng)單一的Java開(kāi)發(fā)已經(jīng)無(wú)法滿(mǎn)足當(dāng)前軟件的復(fù)雜需求時(shí),越來(lái)越多基于Java虛擬機(jī)的語(yǔ)言開(kāi)發(fā)被應(yīng)用到軟件項(xiàng)目中,Java平臺(tái)上的多語(yǔ)言混合編程正成為主流,每種語(yǔ)言都可以針對(duì)自己擅長(zhǎng)的方面更好地解決問(wèn)題。試想一下,在一個(gè)項(xiàng)目之中,并行處理用Clojure語(yǔ)言編寫(xiě),展示層使用JRuby/Rails,中間層則是Java,每個(gè)應(yīng)用層都將使用不同的編程語(yǔ)言來(lái)完成,而且,接口對(duì)每一層的開(kāi)發(fā)者都是透明的,各種語(yǔ)言之間的交互不存在任何困難,就像使用自己語(yǔ)言的原生API一樣方便,因?yàn)樗鼈冏罱K都運(yùn)行在一個(gè)虛擬機(jī)之上。

除了催生出大量的新語(yǔ)言外,許多已經(jīng)有很長(zhǎng)歷史的程序語(yǔ)言也出現(xiàn)了基于Java虛擬機(jī)實(shí)現(xiàn)的版本,這樣使得混合編程對(duì)許多以前使用其他語(yǔ)言的“老”程序員也具備相當(dāng)大的吸引力,軟件企業(yè)投入了大量資本的現(xiàn)有代碼資產(chǎn)也能很好地保護(hù)起來(lái)。表1-1中列舉了常見(jiàn)語(yǔ)言的JVM實(shí)現(xiàn)版本。

1.4.3 多核并行

如今,CPU硬件的發(fā)展方向已經(jīng)從高頻率轉(zhuǎn)變?yōu)槎嗪诵?#xff0c;隨著多核時(shí)代的來(lái)臨,軟件開(kāi)發(fā)越來(lái)越關(guān)注并行編程的領(lǐng)域。早在JDK 1.5就已經(jīng)引入java.util.concurrent包實(shí)現(xiàn)了一個(gè)粗粒度的并發(fā)框架。而JDK ?1.7中加入的java.util.concurrent.forkjoin包則是對(duì)這個(gè)框架的一次重要擴(kuò)充。Fork/Join模式是處理并行編程的一個(gè)經(jīng)典方法,如圖1-5所示。雖然不能解決所有的問(wèn)題,但是在此模式的適用范圍之內(nèi),能夠輕松地利用多個(gè)CPU核心提供的計(jì)算資源來(lái)協(xié)作完成一個(gè)復(fù)雜的計(jì)算任務(wù)。通過(guò)利用Fork/Join模式,我們能夠更加順暢地過(guò)渡到多核時(shí)代。

1.4.4 進(jìn)一步豐富語(yǔ)法

Java ?5曾經(jīng)對(duì)Java語(yǔ)法進(jìn)行了一次擴(kuò)充,這次擴(kuò)充加入了自動(dòng)裝箱、泛型、動(dòng)態(tài)注解、枚舉、可變長(zhǎng)參數(shù)、遍歷循環(huán)等語(yǔ)法,使得Java語(yǔ)言的精確性和易用性有了很大的進(jìn)步。在Java 7(由于進(jìn)度壓力,許多改進(jìn)已推遲至Java 8)中,對(duì)Java語(yǔ)法進(jìn)行了另一次大規(guī)模的擴(kuò)充。Sun(已被Oracle收購(gòu))專(zhuān)門(mén)為改進(jìn)Java語(yǔ)法在OpenJDK中建立了Coin子項(xiàng)目 [1] 來(lái)統(tǒng)一處理對(duì)Java語(yǔ)法的細(xì)節(jié)修改,如二進(jìn)制數(shù)的原生支持、在switch語(yǔ)句中支持字符串、“<>”操作符、異常處理的改進(jìn)、簡(jiǎn)化變長(zhǎng)參數(shù)方法調(diào)用、面向資源的try-catch-finally語(yǔ)句等都是在Coin項(xiàng)目之中提交的內(nèi)容。

1.4.5 64位虛擬機(jī)

在幾年之前,主流的CPU就開(kāi)始支持64位架構(gòu)了。Java虛擬機(jī)也在很早之前就推出了支持64位系統(tǒng)的版本。但Java程序運(yùn)行在64位虛擬機(jī)上需要付出比較大的額外代價(jià):首先是內(nèi)存問(wèn)題,由于指針膨脹和各種數(shù)據(jù)類(lèi)型對(duì)齊補(bǔ)白的原因,運(yùn)行于64位系統(tǒng)上的Java應(yīng)用需要消耗更多的內(nèi)存,通常要比32位系統(tǒng)額外增加10%~30%的內(nèi)存消耗;其次,多個(gè)機(jī)構(gòu)的測(cè)試結(jié)果顯示,64位虛擬機(jī)的運(yùn)行速度在各個(gè)測(cè)試項(xiàng)中幾乎全面落后于32位虛擬機(jī),兩者大約有15%左右的性能差距。

總結(jié)

以上是生活随笔為你收集整理的【深入Java虚拟机JVM 01】Java发展与展望概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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