您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么讀Java源碼”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“怎么讀Java源碼”吧!
1、建議從JDK源碼開始讀起,這個(gè)直接和eclipse集成,不需要任何配置。
可以從JDK的工具包開始,也就是我們學(xué)的《數(shù)據(jù)結(jié)構(gòu)和算法》Java版,如List接口和ArrayList、LinkedList實(shí)現(xiàn),HashMap和TreeMap等。這些數(shù)據(jù)結(jié)構(gòu)里也涉及到排序等算法,一舉兩得。
面試時(shí),考官總喜歡問(wèn)ArrayList和Vector的區(qū)別,你花10分鐘讀讀源碼,估計(jì)一輩子都忘不了。
然后是core包,也就是String、StringBuffer等。 如果你有一定的Java IO基礎(chǔ),那么不妨讀讀FileReader等類。
建議大家看看《Java In A Nutshell》,里面有整個(gè)Java IO的架構(gòu)圖。Java IO類庫(kù),如果不理解其各接口和繼承關(guān)系,則閱讀始終是一頭霧水。
Java IO 包,我認(rèn)為是對(duì)繼承和接口運(yùn)用得***雅的案例。如果你將來(lái)做架構(gòu)師,你一定會(huì)經(jīng)常和它打交道,如項(xiàng)目中部署和配置相關(guān)的核心類開發(fā)。
讀這些源碼時(shí),只需要讀懂一些核心類即可,如和ArrayList類似的二三十個(gè)類,對(duì)于每一個(gè)類,也不一定要每個(gè)方法都讀懂。像String有些方法已經(jīng)到虛擬機(jī)層了(native方法),如hashCode方法。
當(dāng)然,如果有興趣,可以對(duì)照看看JRockit的源碼,同一套API,兩種實(shí)現(xiàn),很有意思的。
如果你再想鉆的話,不妨看看針對(duì)虛擬機(jī)的那套代碼,如System ClassLoader的原理,它不在JDK包里,JDK是基于它的。JDK的源碼Zip包只有10來(lái)M,它像是有50來(lái)M,Sun公司有下載的,不過(guò)很隱秘。我曾經(jīng)為自己找到、讀過(guò)它很興奮了一陣。
2、Java Web項(xiàng)目源碼閱讀
步驟:表結(jié)構(gòu) → web.xml → mvc → db → spring ioc → log→ 代碼
① 先了解項(xiàng)目數(shù)據(jù)庫(kù)的表結(jié)構(gòu),這個(gè)方面是最容易忘記的,有時(shí)候我們只顧著看每一個(gè)方法是怎么進(jìn)行的,卻沒(méi)有去了解數(shù)據(jù)庫(kù)之間的主外鍵關(guān)聯(lián)。其實(shí)如果先了解數(shù)據(jù)庫(kù)表結(jié)構(gòu),再去看一個(gè)方法的實(shí)現(xiàn)會(huì)更加容易。
② 然后需要過(guò)一遍web.xml,知道項(xiàng)目中用到了什么攔截器,監(jiān)聽器,過(guò)濾器,擁有哪些配置文件。如果是攔截器,一般負(fù)責(zé)過(guò)濾請(qǐng)求,進(jìn)行AOP等;如果是監(jiān)聽器,可能是定時(shí)任務(wù),初始化任務(wù);配置文件有如 使用了spring后的讀取mvc相關(guān),db相關(guān),service相關(guān),aop相關(guān)的文件。
③ 查看攔截器,監(jiān)聽器代碼,知道攔截了什么請(qǐng)求,這個(gè)類完成了怎樣的工作。有的人就是因?yàn)槿鄙倭诉@一步,自己寫了一個(gè)action,配置文件也沒(méi)有寫錯(cuò),但是卻怎么調(diào)試也無(wú)法進(jìn)入這個(gè)action,直到別人告訴他,請(qǐng)求被攔截了。
④ 接下來(lái),看配置文件,首先一定是mvc相關(guān)的,如springmvc中,要請(qǐng)求哪些請(qǐng)求是靜態(tài)資源,使用了哪些view策略,controller注解放在哪個(gè)包下等。然后是db相關(guān)配置文件,看使用了什么數(shù)據(jù)庫(kù),使用了什么orm框架,是否開啟了二級(jí)緩存,使用哪種產(chǎn)品作為二級(jí)緩存,事務(wù)管理的處理,需要掃描的實(shí)體類放在什么位置。***是spring核心的ioc功能相關(guān)的配置文件,知道接口與具體類的注入大致是怎樣的。當(dāng)然還有一些如apectj等的配置文件,也是在這個(gè)步驟中完成。
⑤ log相關(guān)文件,日志的各個(gè)級(jí)別是如何處理的,在哪些地方使用了log記錄日志。
⑥ 從上面幾點(diǎn)后知道了整個(gè)開源項(xiàng)目的整體框架,閱讀每個(gè)方法就不再那么難了。
⑦ 當(dāng)然如果有項(xiàng)目配套的開發(fā)文檔也是要閱讀的。
3、Java框架源碼閱讀
當(dāng)然了,就是Spring、MyBatis這類框架。
在讀Spring源碼前,一定要先看看《J2EE Design and Development》這本書,它是Spring的設(shè)計(jì)思路。注意,不是中文版,中文版完全被糟蹋了。
想要閱讀MyBatis的源碼就要先了解它的一些概念,否則云里來(lái)霧里去的什么也不懂。有很多人會(huì)選擇去買一些書籍來(lái)幫助閱讀,當(dāng)然這是可取的。那么如果不想的話,就可以去官網(wǎng)查看它的介紹。
感謝各位的閱讀,以上就是“怎么讀Java源碼”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)怎么讀Java源碼這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。