只有讀一本書才能系統(tǒng)全面的學(xué)習(xí)到知識,否則只能碎片化學(xué)習(xí)某些知識點 。
感想
這是我讀后感的第一篇著作,別笑,真是第一篇 。,這本書我也是挑著看的,我自己美名曰: 不求甚解,也許我只關(guān)心我關(guān)心的知識點,實用派的想法 。
虛擬機的發(fā)展歷史
這里糾正了我的一個對Java狹隘的理解,這本書給出Java的定義如下:
Java不僅是一門編程語言,還是一個有一系列計算機軟件和規(guī)范組成的技術(shù)體系,這個技術(shù)體系提供了完整的用于軟件開發(fā)和跨平臺部署的支持環(huán)境,并廣泛應(yīng)用于嵌入式系統(tǒng)、移動終端、企業(yè)服務(wù)器、大型機等各種場合。
Java的技術(shù)體系
Java的技術(shù)體系可以分為4個平臺,分別為: JavaCard、Java ME、Java SE、Java EE。這里我跟我以前的想法跟以前的區(qū)別就是JavaSE以為就是基礎(chǔ)API,Java EE 是企業(yè)級開發(fā)。這里給的定義是Java SE
是面向桌面級開發(fā)的,Java EE理解倒是沒什么區(qū)別,就是面向企業(yè)級開發(fā)的程序API。
Java虛擬機的發(fā)展歷史
在閱讀這本書之前,我以為JVM虛擬機就是一種,連名字都叫不上來,稱呼為Java的JVM虛擬機。在閱讀者本書之后我發(fā)現(xiàn)Java的虛擬機可不只一個,有很多淹沒在歷史的長河當(dāng)中,從時間線上看我們例舉一下本書介紹的虛擬機的發(fā)展歷史和幾個需要注意的虛擬機。
- Sun Classic VM
首先JDK 1.0用的虛擬機是 Sun Classic VM,作為“Java第一位商用虛擬機”,有資格在Java發(fā)展史上留下重要的一筆,然后替代 Sun Clssic VM 的是 Sun Extact VM所替代,所替代的原因是Sun Classic VM 編譯期和解釋器不配合,不能同時工作,執(zhí)行效率和當(dāng)時C/C++比起來確實很慢,造成當(dāng)時人們對于“Java運行速度慢” 的一種形象。
- Sun Extact VM
Sun Extact VM 解決了編譯器和解釋器不配合的問題,使其兩個能同時混合開發(fā),從而提高了效率,但是 Sun Extact VM 沒有在存活多長時間,就被一個明星虛擬機給取代了,也就是我們大名鼎鼎的Sun Hot Spot VM 取代了。
- Sun HotSpot VM
Sun HotSpot VM 現(xiàn)在我們最廣泛的一個虛擬機,他用于Sun JDK 和OpenJDK中,而這兩種JDK是我們使用最廣泛的JDK了。從而我們可以看到了Sun HotSpot VM 在我們虛擬機中的地位。但是他相較于上邊我們所說的Sun Extack VM有什么優(yōu)點呢? 而且它最開始還不是Sun公司的開發(fā)的虛擬機,而是Sun公司看到了一家小公司開發(fā)的,發(fā)現(xiàn)他有許多新技術(shù)和實際效果。他的優(yōu)點是什么呢?
HotSpot VM的熱點代碼探測能力可以通過執(zhí)行計數(shù)器找到最具有編譯價值的代碼,然后通知JIT編譯器以方法為單位進行編譯。如果一個方法被平凡調(diào)用,或者方法中有效循環(huán)次數(shù)很多,將會分別處罰標準編譯和OSR(棧上替換)編譯動作。通過編譯器和解釋器恰當(dāng)?shù)膮f(xié)同工作,可以在最優(yōu)化程序響應(yīng)時間和最佳執(zhí)行性能取得平衡,而且無需等待本地代碼輸出才能執(zhí)行程序,既是變異的時間壓力也相對減小,這樣有助于引入更多的代碼優(yōu)化技術(shù),輸出質(zhì)量更高的本地代碼。
Sun HotSpot VM和 Sun Extact VM最后的取舍不是因為Sun Extact VM 沒有 前者的優(yōu)點。是當(dāng)時Sun公司最終選擇了一種開發(fā),具體原因這本書的作者也沒說...
其他著名虛擬機
- JRrockit VM
前面介紹了Sun公司開發(fā)的各種虛擬機,除了Sun公司以外,其他組織也研究過不少虛擬機實現(xiàn),其中最大、最著名的就是BEA和IBM公司了。BEA公司開發(fā)的JRockit VM曾經(jīng)號稱“世界上最快的虛擬機”,廣告詞當(dāng)時是這么寫的,最后BEA公司和Sun公司被Oracle公司收購了,從而也是吧JRrockit VM優(yōu)秀的地方合并到HotSpot VM中了。
- IBM J9 VM
這款虛擬機你可以看到,是IBM公司開發(fā)的虛擬機,被人簡稱為 J9 虛擬機,他的作用不像 JRrockit面向的是服務(wù)器端,它類似于HotSpot VM面向的是方方面面,但是他局限于IBM的各種業(yè)務(wù),不是針對廣大Java開發(fā)者們。
Java技術(shù)的未來
- 模塊化
- 混合語言
- 多核并行
- 進一步豐富語法
- 64位虛擬機