初識周志明 --【初讀:深入理解Java虛擬機_JVM高級特性與最佳實踐】


在武俠的世界里,無論是至剛至強的《易筋經》,還是陰柔無比的《葵花寶典》,都離不開內功修煉。沒有了內功心法,這些武術只是花拳綉腿的拙劣表演而已。軟件業是武林江湖的一個翻版,也有着大量的模式,套路,規范等外功,但“外功修行,內功修神”,要想成為”掃地僧“一樣的絕世高手,此書是必備的。  --秦小波  著有《設計模式之禪》

此篇長文我會更新對 周志明《深入理解Java虛擬機_JVM高級特性與最佳實踐》的思想感悟以及內容實踐,包括對其中經典思想的碰撞,對作者提問問題的尋根和問題延展,對JVM的感悟,以不定期連載的方式更新此文,感謝計算機大師的著作!

 

第六章  類文件結構

  • 【思想碰撞】Java語言不能僅靠返回值來重載的本質

原因:《Java虛擬機規范(第二版)》與《Java語言規范(第三版)》分別定義了字節碼層面的方法特征簽名及Java代碼層面的方法特征簽名,Java代碼的方法特征簽名只包括 方法名稱,參數順序,參數類型,而字節碼文件的特征簽名則還包括 方法返回值受異常表

解讀:Java語言在編譯器編譯Java代碼為class文件時,針對方法體的特征簽名(特征簽名就是一個方法中各個參數在常量池中的字段符號引用的集合:簡單的說就是存在class文件中以二進制表示的可以識別成java方法體各個參數的常量集合)為 方法名稱,參數順序,參數類型 ,不包括返回值,也就是java編譯出的class文件壓根不會存返回值,自然不能識別出僅有返回值不同的方法體,這種僅有返回值不同的編譯會導致報錯,另外需要格外注意的是 字節碼文件(class)的特征簽名包括 方法返回值受異常表,所以其他語言如果語言規范里允許編譯存放返回值,那么僅有返回值不同的方法是合法的。

驗證:驗證通過,不能僅通過返回值不同重載

 

第七章  虛擬機類加載機制

【思維延申】從jvm虛擬機類加載機制的角度來分析 jar包沖突導致的 NoSuchMethodError等本質原因了,並設法驗證你的說辭。

【小記】Java能作為面向對象語言的一個原因:Java語言中,其類型的加載和連接過程都是在運行期實現的,雖然這會在類加載的過程中增加一些開銷,但是也提供了相當大的靈活性,Java語言天生可以動態擴展的語言特性,就是依賴運行期動態加載和動態連接的特點實現的。

                                                                    09/12/2018 12:07:29


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM