文明需要創造,也需要傳承。JVM作為一款虛擬機,本身便是技術之集大成者,里面包含方方面面的底層技術知識。拋開如今Java如日中天之態勢不說,純粹從技術層面看,JVM也值得廣大技術愛好者深入研究。可以說,從最新的硬件特性,到最新的軟件技術,只要技術被證明是成熟的,都會在JVM里面見到其蹤影。
文章書內容總共分為10章的內容:第1章Java虛擬機概述、第2章Java執行引擎 工作原理:方法調用、第3章Java數據結構與面向對象、第4章Java字節碼實戰、第5章常量池解析、第6章類變量解析、第7章Java棧幀、第8章類方法解析、第9章執行引擎、第10章類的生命周期。
大家轉發關注小編,私信小編“學習”得到獲取方式吧!
JDK的每一次更新,從內部到核心類庫,JVM都會及時引人這些最新的技術或者算法,這便是技術傳承意義之所在。隨著云計算、大數據、人工智能等最新技術的發展,Java 技術生態圈也日益龐大,JVM與底層平臺以及與其他編程語言和技術的交互、交織日益深人,這些都離不開對JVM內部機制的深人理解。如果說以前在中間件與框架領域的大展身手,依靠的是Java語言層面的特性和技術,那么以后越來越多的技術紅利將會因JVM層面之創新而得以顯現。
被真相所蒙蔽,是一件痛苦的事。我們在一一個被層層封裝的世界里進行開發和設計,操作系統、各種中間件與框架,將底層世界隱藏得結結實實。我們一方面享受著高級編程語言所帶來的高效、穩定、快速的開發體驗,然而另-方面,卻又如同行走于黑暗之中。我們不知道路的下面是否有坑,即使有坑,可能也不知道如何排除。Java 的很多概念和技術,很多時候由于我們對底層機制的不了解,而讓我們感到十分高深莫測,無法知其全貌。這種感覺非常痛苦,尤其是技術修煉到一定階段的時候。
1-2
紙上得來終覺淺,絕知此事要躬行。即使從Java語言層面下探到JVM層面,但是若只囿于對JVM機制理論和概念上的理解,很多時候仍然覺得缺乏那種大徹大悟之感。計算機作為一門科學,與其他的科學領城-樣, 不僅需要對其理論的理解,也需要能夠去實證。例如愛因斯坦的相對論十分高深,但是通過對引力波和紅移的觀測,其變得形象和生動起來。
3-4
Java 的部分概念經過“口口相傳”,似有過于夸大其技術神秘性之嫌,讓人望而生畏。例如,與volatile關鍵字相關的內存可見性、指令亂序等概念,給人無比博大深奧的印象,但是如能拋開概念,直接看底層實現機制,并輔以具體的實驗論證,則會形成深刻而徹底的認知。其實,這世界本來就很簡單。在可觀測的實驗結果與可理解的底層機制面前,一切浮夸的概念都自然會現出原形。
因此,采用自底而上的技術研究之道,相比自頂而下的辦法,便多了更多窺透本質的自信和平實。同一個底層概念,在不同的高級編程語言里,在概念、叫法上很少能夠保持一致。采用自底而上的探索方法,能夠揭開各種深奧概念的神秘面紗,還原一個清明簡潔的世界。自然理解曲線也不會有大起大落。
6-7
研究JVM的過程,就是與大師們]進行精神溝通和心靈交流的過程,雖然過程會比較痛苦。研究諸如Linux、 JVM這樣的底層程序,你能學習到大師級的理念,更能夠見識到經無數牛人反復錘煉后的技術。天長日久的耳濡目染,終有一天你也會成為大師,你也會擁有大師級的眼光,你也會擁有開闊的胸懷。如同音樂家李健,人們如此喜歡他,并不僅僅是因為他歌唱得好,更多的是因為氣質。而這種氣質來自于博覽群書,來自于對藝術的長久修煉。計算機從某種程度上而言,也是一門藝術,工程師和程序員們要想進化,對計算機藝術的修煉必不可少。與大師進行精神溝通,不僅能夠修煉到計算機的藝術,更能直接感受并養成大師身上所具備的氣質。
9-10
我不知道Java還能走多遠,未來是否會被淘汰,但你不能因此就否定研究JVM的意義。JVM作為一款虛擬機,各種底層技術和理論都有涉及,若你能研究透徹,則能-通百通。例如,本人在研究過程中,也翻閱了諸如Python、JavaScript等高級面向對象語言虛擬機的機制,發現它們內部的整體思路都相差不大。同時, JVM本身在運行期干了- -部分C或C++語言編譯器所干的事,例如符號解析、鏈接、面向對象機制的實現等,通過對這些機制的分析,從來沒有研究過C/C++編譯器原理的我,基本也能夠猜出C/C++編譯器可能的實現方式,后來翻閱了相關資料,果不其然。理解編譯與虛擬機的實現機制是一方面, 另一方面,通過深挖JDK核心類庫的內部實現,則能夠深刻理解線程、并發、/0等比較高深的技術內幕。例如Java NIO,何謂VMA?何謂內核映射?若想真正徹底理解這些概念,不從底層人手,恐怕很難有一一個具象化的認知。
市面上JVM的書有很多,但是呢,小編認為這絕對是那最經典的那一本,得之幸之,相見恨晚!
大家轉發關注小編,私信小編“資料”得到獲取方式吧!
總之,研究JVM,是一件非常能夠提升開發者內功的事情,未來無論出現什么樣的新語言、新技術、新概念,你總是能夠不被表面的東西所迷惑,而是能夠透過層層封裝,看清事物的本質,你總是能夠以極低的學習成本,迅速理解新的東西。從一個更為廣闊的視角,使用發散的思維去看,不一定非要研究JVM才能有很大收獲,研究其他技術的底層,會有異曲同工之妙。
而只不過恰好生在了這個年代,這個Java語言大行其道的年代,所以就恰好對其做了一個比較深人的研究而已。工具有時空疆界,而技術思想則沒有,其總能穿越千萬年的時空,無限延伸。JVM涉及的知識面十分廣闊,因此限于篇幅,本書并未覆蓋JVM的全部內容。
總體而言,本書重點描述了JVM從啟動開始到完成函數執行的詳細機制,讀完本書相信你一定能夠明白JVM執行Java程序的底層機制,能夠明白JVM將Java語言一步步轉換為CPU可執行的機器碼的內部機制,以及為此而制定的各種規范的實現之道,例如oop-klass模型、堆棧分配模型.類加載模型等。