中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么閱讀Java源碼

發布時間:2021-12-01 11:20:44 來源:億速云 閱讀:123 作者:iii 欄目:編程語言

本篇內容主要講解“怎么閱讀Java源碼”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么閱讀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公司有下載的,不過很隱秘。我曾經為自己找到、讀過它很興奮了一陣。

Java Web開發源碼

在閱讀Tomcat等源碼前,一定要有一定的積累。我的切實體會,也可以說是比較好的階梯是:

1、寫過一些Servlet和JSP代碼。注意,不是用什么Struts,它是很難接觸到Servlet精髓的。用好Struts只是皮毛。

2、看過《Servlet和JSP核心編程》

3、看過Sun公司的Servlet規范

4、看過http協議的rfc,debug過http的數據包

如果有以上基礎,我也不建議你開始讀Tomcat源碼。我建議你在閱讀Tomcat源碼前,讀過Struts源碼,Struts源碼比  WebWork要簡單得多。這個框架是可以100%讀懂的,至少WebWork我沒有100%讀懂。我曾經因為讀懂了Struts源碼,自己寫過一個  Web框架。

當然,在讀Struts框架前,***看過它的MailReader等demo,非常非常不錯的。

如果你做過一些Struts項目,那么讀它時就更得心應手了。

在讀Struts前,建議看看mvnforum的源碼,它部分實現了Struts的功能,雖然這個BBS做得不敢恭維。

如果你讀過Struts,再開始考慮Tomcat源碼閱讀吧。

不過,我還是不建議直接讀它,先讀讀onJava上的系列文章《How Tomcat  Works》吧,它才是Tomcat的最最簡易版。它告訴你HttpServletRequest如何在容器內部實現的,Tomcat如何通過  Socket來接受外面的請求,你的Servlet代碼如何被Tomcat容器調用的(回調)。

學習JSP,一定要研讀容器將JSP編譯后的Servlet源碼。

為什么我總是稱呼Tomcat為容器,而不是服務器?這個疑問留給大家吧。

如果你一定要讀Tomcat,那么就讀Jetty吧。至少它是嵌入式,可以直接在eclispe里面設置斷點debug。雖然Tomcat也有嵌入式版本。

Java數據庫源碼閱讀

我建議,先讀讀Sun的JDBC規范。

我想你一定寫過JDBC的代碼,那么這時候可以開始閱讀源碼了。

如果了解JDBC規范(接口),那么它的實現,JDBC  Driver就一定要開始了解,我的建議是,讀讀mysql的jdbc驅動,因為它開源、設計優雅。在讀mysql的JDBC驅動源碼時,建議看看  mysql的內幕,官方正好有本書,《Mysql  Internals》,我五年前讀過一部分。比如你可以知道mysql的JDBC驅動,如何通過socket數據包(connect、query),給這  個C++開發的mysql服務器交互的。

通過上面的閱讀,你可以知道,你的業務代碼、JDBC規范、JDBC驅動、以及數據庫,它們是如何一起協作的。

如果你了解這些內幕,那么你再學習Hibernate、iBatis等持久化框架時,就會得心應手的。

讀過JDBC驅動,那么下一步一定要讀讀數據庫了。而正好有一個強大的數據庫是用Java開發的,Hsqldb。它是嵌入式數據庫,比如用在桌面客戶端軟件里,如Mail  Client。

Java通訊及客戶端軟件

我強烈推薦即時通訊軟件wildfire和Spark。你可以把wildfire理解成MSN服務器,Spark理解成MSN客戶端。它們是通過XMPP協議通訊的。

我曾經在一個項目中,定制過Spark,當然也包括服務端的一些改動。所以它們的源碼我都讀過。

我之所以推薦它們。是因為:

1、XMPP夠輕量級,好理解

2、學習Socket通訊實現,特別是C/S架構設計

3、模塊化設計。它們都是基于module的,你既可以了解模塊化架構,還可以了解模塊化的技術支撐:Java虛擬機的ClassLoader的應用場景。

4、Event Driven架構。雖然GUI都是Event驅動的,但Spark的設計尤其優雅

這么說吧,讀它們的源碼,你會為做一名程序員而自豪,因為無論是他們的架構設計還是代碼,都太漂亮了。

Java企業級應用

當然了,就是Hibernate、Spring這類框架。

在讀Spring源碼前,一定要先看看Rod Johnson寫的那邊《J2EE Design and  Development》,它是Spring的設計思路。注意,不是中文版,中文版完全被糟蹋了。

在讀Hibernate源碼前,一定要讀讀Gavin King寫的那本《Hibernate in Action》,同時,應該再讀讀Martin  Fowler寫的《企業應用架構模式》,它專門談到持久化框架的設計思路。當你覺得這兩本書讀透了,再去看它們源碼吧。

而且,在讀源碼前,你會發現它們用到很多第三方Jar包,二三十個,你***把那些Jar包先一個個搞明白。

說到企業應用,一定會涉及到工作流。我當年讀過jBPM的源碼,網上有介紹jBPM內核的文章(銀狐)。我感覺它的內核也就兩千行,不要害怕。我曾經閱讀jBPM源碼的博客。

當然了,讀工作流源碼,前提是一定要對其理論模型有深入的了解,以及寫過一些demo、或做過一些項目。

我上面介紹的這些,是我自己讀過的,也適合一般人閱讀。

我也讀過一些非Java源碼,感覺不錯,也推薦給大家:

dojo源碼  它的架構設計得很優雅,仿Java的import和extends。但實際應用起來一塌糊涂。我們當年基于這個開發了自己的框架,不過我不是主力。

Flex源碼 Flex  08年底剛剛開源后,我就用它做過一個中型項目,應該說是國內的技術先行者。當時市面沒有有深度的書,也沒有開源項目。我純粹是看Flex的Help文檔和源碼,把項目搞定的。兩三年過去了,現在覺得系統設計得蠻優雅的。

到此,相信大家對“怎么閱讀Java源碼”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新疆| 华宁县| 贵阳市| 西青区| 娱乐| 陵川县| 隆安县| 定西市| 鄯善县| 来安县| 耒阳市| 星子县| 九江市| 汉源县| 廊坊市| 珲春市| 吉隆县| 柳江县| 新泰市| 隆尧县| 张家界市| 连平县| 博客| 体育| 瑞安市| 富民县| 苍梧县| 秀山| 深水埗区| 永靖县| 马关县| 蕲春县| 扶绥县| 江源县| 黄大仙区| 尖扎县| 和平县| 屏南县| 姜堰市| 喜德县| 枝江市|