讀點源碼

http://blog.csdn.net/u012586848/article/details/49945731html

關於源碼程序員

 

強烈的求知慾,我認爲是閱讀源碼的最核心驅動力。我見到絕大多數程序員,對學習的態度,基本上就是這幾個層次(很偏激哦): 
一、只關注項目自己,不懂就baidu一下。 
二、除了作好項目,還會閱讀和項目有關的技術書籍,看wikipedia。 
三、除了閱讀和項目相關的書外,還會閱讀IT行業的書,好比學Java時,還會去了解函數語言,如LISP。 
四、找一些開源項目看看,大量試用第三方框架,還會寫寫demo。 
五、閱讀基礎框架、J2EE規範、Debug服務器內核。 

大多數程序都是第1種,到第5種不光須要濃厚的興趣,還須要勇氣:我能讀懂嗎?其實,你可以讀懂的。 

耐心,真的很重要。由於你極少看到閱讀源碼的指導性文章或書籍,也沒有人要求或建議你讀。你讀的過程當中常常會卡住,而一卡主可能就陷進了迷宮。這時,你須要作的,多是暫時中斷一下,再從外圍看看它:如API結構、框架的設計圖。 

我就說說如何讀Java源碼,以及我曾經的閱讀感悟。 

Java源碼初接觸 
若是你進行過一年左右的開發,喜歡用eclipse的debug功能。好了,你如今就有閱讀源碼的技術基礎。 
我建議從JDK源碼開始讀起,這個直接和eclipse集成,不須要任何配置。 

能夠從JDK的工具包開始,也就是咱們學的《數據結構和算法》Java版,如List接口和ArrayList、LinkedList實現,HashMap和TreeMap等。這些數據結構裏也涉及到排序等算法,一箭雙鵰。 
面試時,考官總喜歡問ArrayList和Vector的區別,你花10分鐘讀讀源碼,估計一生都忘不了。 

而後是core包,也就是String、StringBuffer等。 
若是你有必定的Java IO基礎,那麼不妨讀讀FileReader等類。我建議你們看看《Java In A Nutshell》,裏面有整個Java IO的架構圖。Java IO類庫,若是不理解其各接口和繼承關係,則閱讀始終是一頭霧水。 
Java IO 包,我認爲是對繼承和接口運用得最優雅的案例。若是你未來作架構師,你必定會常常和它打交道,如項目中部署和配置相關的核心類開發。 

讀這些源碼時,只須要讀懂一些核心類便可,如和ArrayList相似的二三十個類,對於每個類,也不必定要每一個方法都讀懂。像String有些方法已經到虛擬機層了(native方法),如hashCode方法。 

固然,若是有興趣,能夠對照看看JRockit的源碼,同一套API,兩種實現,頗有意思的。 
若是你再想鑽的話,不妨看看針對虛擬機的那套代碼,如System ClassLoader的原理,它不在JDK包裏,JDK是基於它的。JDK的源碼Zip包只有10來M,它像是有50來M,Sun公司有下載的,不過很隱祕。我曾經爲本身找到、讀過它很興奮了一陣。面試

相關文章
相關標籤/搜索