首頁  >  文章  >  Java  >  分享Java程式設計師應該閱讀的好書

分享Java程式設計師應該閱讀的好書

零下一度
零下一度原創
2017-06-25 10:41:401259瀏覽

身為Java程式設計師來說,最痛苦的事情莫過於可以選擇的範圍太廣,可以讀的書太多,往往容易無所適從。我想就我自己讀過的技術書籍中挑選出來一些,按照學習的先後順序,推薦給大家,特別是那些想不斷提高自己技術水平的Java程式設計師們。

一、Java程式設計入門類別
對於沒有Java程式設計經驗的程式設計師要入門,隨便讀什麼入門書籍都一樣,這個階段需要你快速的掌握Java基礎語法和基本用法,宗旨就是“囫圇吞棗不求甚解”,先對Java熟悉起來再說。用很短的時間快速過一遍Java語法,連懵帶猜多寫寫程式碼,要「知其然」。
1、《Java程式設計思想》
在有了一定的Java程式設計經驗之後,你需要「知其所以然」了。這時候《Java程式設計思想》是一本讓你知其所以然的好書,它對於基本的物件導向知識有比較清楚的交待,對Java基本語法,基本類別庫有比較清楚的講解,可以幫你打一個良好的Java程式設計基礎。這本書的缺點是實在太厚,也比較羅嗦,不適合現代人快節奏學習,因此看這本書要懂得取捨,不是每章每節都值得一看的,挑重點的深入看就可以了。
2、《Agile Java》中文版
這本書是出版社送給我的,我一拿到就束之高閣,放在書櫃一頁都沒有翻過,但是前兩天整理書櫃的時候,拿出來一翻,竟然發現這絕對是一本好書!這本書一大特色是以單元測驗和TDD來貫穿全書的,在教你Java各種重要的基礎知識的過程中,潛移默化的影響你的程式思考走向敏捷,走向TDD。另外這本書成書很新,以JDK5.0的文法為基礎講解,要學習JDK5.0的新文法也不錯。還有這本書對於內容取捨也非常得當,Java語言畢竟類庫龐大,可以講的內容太多,這本書選擇的內容以及內容的多寡都很得當,可以讓你以最少的時間掌握Java最重要的知識,順便培養出優秀的程式設計思路,​​真是一本不可多得的好書。
雖然作者自己把這本書定位在入門級別,但我不確定這本書用來入門是不是稍微深了點,我自己也準備有空的時候翻翻這本書,學習學習。
二、Java程式設計進階類別
打下一個良好的Java基礎,還需要更多的實作經驗積累,我想沒有什麼捷徑。有兩本書值得你在程式設計生涯的這個階段閱讀,培養良好的程式設計習慣,提升你的程式碼品質。
1、《重建 改善既有程式碼的設計》
這本書名氣很大,不用多介紹,可以在閒暇的時候多翻翻,多和自己的實踐相互印證。這本書對你產生影響是潛移默化的。
2、《測試驅動開發 by Example》

本書最大特點是很薄,看起來沒有什麼負擔。你可以找一個週末的下午,一邊看,一邊照做,一個下午就把書看完,這本書的所有例子都跑完了。這本書的功能是透過實戰讓你培養TDD的思路。
三、Java架構師之路
到這個階段,你應該已經非常嫻熟的運用Java編程,而且有了一個良好的編程思路和習慣了,但是你可能還缺乏對應用軟體整體架構的把握,現在就是你邁向架構師的第一步。
1、《Expert One-on-One J2EE Design and Development》
這本書是Rod Johnson的成名著作,非常經典,從這本書中的程式碼誕生了springframework。但好像這本書沒有中譯本。
2、《Expert One-on-One J2EE Development without EJB》
這本書由gigix組織翻譯,多位業界專家參與,雖然署名譯者是JavaEye,其實JavaEye出力不多,實在是忝居譯者之名。
以上兩本書都是Rod Johnson的經典名著,Java架構師的必讀書籍。在我所推薦的這些書籍當中,是我看過的最仔細,最認真的書,我當時讀這本書幾乎是廢寢忘食的一氣讀完的,有小時候挑燈夜讀金庸武俠小說的勁頭,書中所講內容和自己的經驗知識一一印證,又被無比精闢的總結出來,讀完這本書以後,我有種被打通經脈,功力爆增的感覺。
但是後來我看過一些其他人的評價,似乎閱讀體驗並沒有我那麼high,也許是因為每個人的知識積累和經驗不同導致的。我那時剛好是經驗知識累積已經夠豐富,但是還沒有系統的整理成型,讓這本書一梳理,立刻形成完整的知識體係了。
3、《企業應用架構模式》
Martin的另一本名著,但這本書我只是泛泛的看了一遍,並沒有仔細看。這本書似乎比較適合做框架的人去看,例如如果你打算自己寫一個ORM的話,這本書是一定要看的。但是做應用的人,不看貌似也無所謂,但是如果有空,我還是推薦認真看看,會讓你知道框架為什麼要這樣設計,這樣你的層次可以晉升到框架設計者的角度去思考問題。 Martin的書我向來都是推崇,但是從來都沒有像Rod Johnson的書那樣非常認真去看。
4、《敏捷軟體開發原則、模式與實務》

Uncle Bob的名著,敏捷的經典名著,這本書比較特別,與其說是講軟體開發過程的書,不如說講軟體架構的書,本書用了很大篇幅講各種物件導向軟體開發的各種模式,個人以為看了這本書,就不必看GoF的《設計模式》了。
四、軟體開發流程
了解軟體開發流程不單純是提升程式設計師個人的良好程式設計習慣,也是增強團隊協作的基礎。
1、《UML精粹》
UML其實和軟體開發過程沒有什麼必然聯繫,卻是軟體團隊協作溝通,撰寫軟體文件所需的工具。但UML真正實用的圖不多,看看這本書已經夠了,完全沒有必要去啃《UML使用者指南》之類的東西。要提醒大家的是,這本書的中譯本翻譯的非常之爛,建議有條件的看英文原版。
2、《解析極限程式設計 擁抱變化》XP
這是Kent Beck名著的第二版,中英文對照。沒什麼好說的,必讀書籍。
3、《統一軟體開發流程》UP
其實UP和敏捷不一定衝突,UP也非常強調迭代,測試,但是UP強調的文件和流程驅動卻是敏捷所不取的。不管怎麼說,UP值得你去讀,畢竟在中國真正接受敏捷的企業很少,你還是需要用UP來武裝一下自己的,哪怕是披著UP的XP。
4、《敏捷建模》AM
Scott Ambler的名著,這本書非常的progmatic,告訴你怎麼既敏捷又UP,把敏捷和UP統一起來了,又提出了很多progmatic的建議和做法。你可以把《解析極限編程擁抱變化》、《統一軟體開發過程》和《敏捷建模》這三本書放在一起讀,看XP和UP的不同點,再看AM是怎麼統一XP和UP的,把這三種理論融為一體,形成自己的理論體系,那麼你也可以去寫書了。
五、軟體專案管理
如果你突然被領導提升為專案經理,而你完全沒有專案管理經驗,你一定會心裡沒底;如果你覺得自己管理專案不善,很想改善你的專案管理能力,那麼去考PMP一定是遠水不解近渴的。
1、《快速軟體開發》
這也是一本名著。可以這樣說,有本書在手,你就有了一個專案管理的高級參謀給你出謀劃策,再也不必擔心自己不能勝任的問題了。這本書不是講管理的理論的,在實際的專案管理中,講這些理論是不解決問題的,這本書有點類似於「軟體專案點子大全」之類的東西,列舉了種種軟體專案當中面臨的各種問題,以及應該如何解決問題的點子,你只需要稍加變通,找方抓藥就行了。
六、總結
在這份推薦閱讀書籍的名單中,我沒有列舉流行的軟體框架類學習書籍,例如Struts,hibernate,spring之類,也沒有列舉AJAX方面的書籍。是因為這類書籍容易過時,而上述的大半書籍的生命週期都足夠長,值得你去購買和收藏。

 

1. Java語言基礎
    談到Java語言基礎學習的書籍,大家一定會推薦Bruce Eckel的《Thinking in Java》。它是一本寫的相當深刻的技術書籍,Java語言基礎部分基本上沒有其它任何一本書可以超越它。該書的作者Bruce Eckel在網路上被稱為天才的投機者,作者的《Thinking in C++》在1995年曾獲SoftwareDevelopment Jolt Award最佳書籍大獎,《Thinking in Java》被評為1999年Java World“最愛讀者歡迎圖書”,並贏得了編輯首選圖書獎。作者從1986年至今,已經發表了超過150篇電腦技術文章,出版了6本書(其中4本是關於C++的),並且在全世界做了數百次演講。他是《Thinking in Java》、《Thinking in C++》、《C++ Inside & Out》《Using C++》和《Thinking in Patterns》的作者,同時也是《Black Belt C++》文集的編輯。他的書被讀者稱為「最好的Java參考書…絕對令人震驚」;「購買Java參考書最明智的選擇」;「我見過的最棒的程式指南」。作者的非凡才華,極度跨越語言的能力,使作者被選為Java發展10年間與Java關係最密切的10個人物之一。
    《Thinking in Java》講述了Java語言的方方面面,許多Java語言的老手都評價「這是一本將Java語言講得相當醜陋的書」。書中談到了java語言的許多細節,每一個面向都是相當深刻的。透過本書你可以看到「醜陋的」java語言。
    網路上關於java語言解說的影片很多很多,其中不凡有垃圾。 《翁愷—JAVA語言》可能是你學習java語言基礎的唯一選擇,該講座基本上按照《Thinking in Java》這本書講解,其中不凡有翁老師的很多有意思的笑話。我很幸運學習就是從此影片開始的。內容包括30講,我總共看了3遍。
    不過,對於初學者我不太推薦使用《Thinking in Java》,我比較推薦Prentice Hall PTR 的《Core Java 2》國內稱為《Java 2 核心技術》,目前是第七版。網路上大家都可以下載到電子版。 Oreilly的《Java in a nutshell》也是不錯的選擇。讀完以上兩本後,你可以看看翁愷老師的視頻,接著可以研究《Thinking in Java》了。
 
2. Java資料結構
    市面上關於Java資料結構的書本身就很少很少。大致上有APress 的《Java Collections》,Jones 和Bartlett 的《Data Structures in Java》、《Object-oriented Data Structures Using Java》以及Prentice Hall 出版的《Data Structures and Algorithms in Java》 (Dec 19, 2005)還有一本就是《Data Structures And Algorithms With Object-oriented Design Patterns In Java》。很幸運我的第一本英文書就是APress 的《Java Collections》(本書在國內可能根本就沒有中文版――只能下載英文版了),很不錯,講得很有條例、很簡單,是一本完完全全Java Collections API介紹的書籍,其中不凡有擴充API的例子。這是我推薦你學習java資料結構的唯一一本好書。其它的Jones 和Bartlett的那兩本國內好像有一本中文版,想看你也可以看看。
    學習完API後,你可以看看java.util套件中對應的類別了。不過只有在學習設計模式後你才有可能完全理解整個Java Collections Framework。 Java Collections Framework使用了許多著名的設計模式如:迭代器(Iterator)模式,工廠方法模式、裝飾模式、轉接器模式等等。透過研究java.util套件中資料結構的原始程式碼,你可以知道臭名昭著的Properties類別的設計了,同時可能基本上具備設計簡單的資料結構的能力了。
    所謂學習無止境,學習完Sun提供了Java Collections Framework後,你可以研究Apche的另一個Java Collections Framework,很有意思哦。互為補充的兩個Framework。
 
    在大家學習、研究Java Collections之前,我先提示Java Collections主要包含以下三個部分:介面(Interface)、實作(Implemention)和演算法(Algorithm)。
1.     介面主要有List、Set、Queue和 Map。 List 、Se t和Queue是 Collection介面的子介面。
2.     實作主要是實現這些介面的特定類別。如實作List介面的ArrayList、LinkedList、Stack和Vector;實作Set介面的HashSet、TreeSet 和LinkedHashSet;實作Queue介面的PriorityQueue、SynchronousQueue等等;實作Map介面的HashMap、TreeMap、Hashtable、Properties、WeakHashMap等等。
3.     演算法主要是由Arrays類別和Collections類別提供的,它是整個Java Collection Framework演算法的核心。支援各種類型的排序,查找等常用操作。
     Java Collections中包含兩個版本的資料結構,主要是原先的支援同步的資料結構和後來不支援同步的資料結構。
     Java Collection Framework在使用Comparator和Comparable介面支援排序。同時提供新舊兩個版本的迭代器Iterator和Enumeraton,以及它們如何轉換等等。
    在java.util套件中的Obserable介面和Observer類別是考察者模式的核心。
     ……
##   
#3. Java IO
    市面上關於IO的書籍也僅只有Oreilly出版社的兩本,都是Elliotte Rusty Harold的著作。兩本書的風格基本上一致,推薦閱讀是第一版的《Jvava I/O》,講得比較淺顯,內容相對比較集中,實例也很多。第二版今年5月國外才出版,很有幸我在網路上下載了第二版,講得極其詳細――726頁的大塊頭(我化了兩個星期),這次將NIO和IO和在一起,還包括J2ME部分的,不過串口、並口通訊部分好像類別庫支援不夠,自己不能實際操作。
    與第一版的《Jvava I/O》一起的Oreilly還有一本《Jvava NIO》,也是很不錯的喔。
    大家依序閱讀《Jvava I/O》以及《Jvava NIO》後,可以研究java.io套件中的原始碼了。在大家研究原始碼前我給點提示:
     Java的io套件主要包括:
1.     兩種串流:位元組流(byte Stream)和字元流(character stream) ,這兩種流不存在所謂的誰代替誰、誰比誰高級之說,它們互為補充,只是側重點不同而已。
2.     兩種對稱:1.位元組流、字元流的對稱;2.輸入、輸出的對稱。
3.     一個橋樑:將位元組流轉換為字元流的InputStreamReader和OutputStreamWriter。
    其中必須注意:
1.     PipedInputStream和PipedOutputStrem是兩個有趣的類別。
2.     支援Buffered的流是我們常用的類別。
3.     裝飾器(Decorator)模式在java中最著名的應用就是用於io的設計。仔細研究各個Filter流與具體流的關係,多看設計模式的書籍。相信你會有所所獲。
4.     學習好io包,是研究net包,rmi包…的基礎!
 
4 . Java資料庫
       資料庫的書太多太多了,也太爛太爛了!這方面的書我基本上都研究過,推薦的你就看看Apress的《JDBC Recipes A Problem Solution Approach 》很不錯,國外2005年底才出版,(國內好像沒有中文版,不過出了中文版也不一定值得看――國內常將國外的書翻譯得一塌糊塗、不堪入目)不過我們真的很幸運,網路上有電子版的。值得一看。推薦我看的第一本比較滿意的――Wiley出版的《Java Database Bible》,講得很不錯! Sun公司自己的關於JDBC API介紹的那一本《JDBC API Tutorial andRefernece》也不錯。我第二本JDBC的就是研究的這套API。
    不過目前這些書都是一些相對比較浮淺的API應用的書。有機會我會帶給大家介紹JDBC API以及JDBC實作內部細節的書!我盡快努力,同時希望得到大家的支持!
    順便給學習JDBC的朋友一點提示:
     JDBC的學習和使用主要是這套API,其使用過程也是極其簡單,以下是使用JDBC的一般流程:
1.     載入某個資料庫的驅動程式(Driver類別),通常使用Class.forName(「驅動的類別名稱「);
2.     連接資料庫資料庫查詢= DriverManager.getConnection(url,username,password);
3.     得到會話――Statement stmt = con.createStatement();
#4.     執行作業執行作業; executeQuery(“SQL查詢語句”);
5.     處理結果――
     while(rs.next()){
     );
         …
#     }
    簡單吧!在整個JDBC中可以變化的一般是:
1.       可以由Connection物件建立Statement、PreparedStatement和CallableStatement建立三種類型的Statement。
2.       可以創建多種類型的ResultSet:支援單向移動和自由移動;可更新的和不可更新的;支援不同等級的交易的…..
3.資料輸入的批次處理。
4.       結果集中特殊型別(Blob、Clob、Arrary及Ref、Struct)所列的作業。
5.       這些特殊類型的輸入資料庫。
6.       javax.sql包中特殊結果集(CachedRowSet、JdbcRowSet、WebRowSet)的操作。
7.       其它的則為一個DataSource了,也很簡單!一個J2EE中的被管理對象
    簡單吧!相信大家很快就會征服JDBC。
 
5. Java 網路程式設計
    網路程式設計――一個神祕的、充滿挑戰的方向。不過在談Java網路程式設計之前先感謝Sun公司的開發人員,因為它們天才的設想,充滿智慧的架構,使廣大java程式設計師學習java網路程式設計變得異常簡單。
     Java網路程式設計的書,我推薦O'Reilly的《Java Network Programming》,目前已經第三版了,以前的版本市面上肯定有!網路上早有第三版的電子版,國外2004年出版,706頁喔!講得很全,比較深入,太深入的可能由於Sun有些東西沒有完全公開,所以也就不好講了,有興趣的可以下載看看!第二本還是O'Reilly 1998年出版的《Java distributed computing 》,基礎部分寫得比較詳細,後面的實例還是值得研究的。
    在大家閱讀這些書之前,先給大家一點提示:
     java網路程式設計其實相對比較簡單,入門也很快很快。 java網路程式設計主要包括兩個部分:1.Socket;2.URL部分。不過第二部分也完全建立在第一部分的基礎上。
1.       Socket包含客戶端的Socket和伺服器端的ServerSocket。還有就是DatagramSocket和DatagramPacket,它對應於UDP通訊協定。 總之,Socket部分是建立其它高級協議的基礎。
2.       URL類別是網路資源定位器,通常且特定的網路協定如HTTP,FTP,Telnet…相關。透過該類別可以連接網路上的資源,透過其openStream可以以io套件中的流(InputStream)的形式讀取網路資源;透過其OpenConnection方法,可以開啟一個連接,在此連接上可以不僅可以完成讀取的操作,還可以完成寫入的操作。
     Java的網路程式設計大致包括上述兩個部分。網路程式設計和IO以及多執行緒部分非常密切,在學習此部分前大家一定對這兩部分了解比較透徹。
    學習了以上部分你可以研究java.net套件中的與此相關的原始碼了!研究所有的原始碼還為時過早。在整個net包中包含:ContentHandlerFactory、URLStreamHandlerFactory、URLStreamHandler、URLClassLoader等輔助類,它們構成了java.net網路程式設計的框架,透過研究其原始程式碼,你不僅可以快速理解java.net包,還可以為以後擴展該包打下基礎,甚至可以將此思維方式運用到自己的專案中。
    到此為止你對java.net包應該才了解60%,還有一部分你可以使用JDecompiler之類的反編譯軟體打開你JDK安裝目錄下\jdkxxx\jre\lib目錄中的rt .jar,用WinRAR之類的軟體打開它的sun.net包,反編譯所有的文件,它是URL類別工作的細節。當研究完該sun.net包,你就會對整個網路程式設計很熟悉很熟悉了。
    一切看起來我們已經對網路程式設計很精通了。其實不然,剛開始而已,要想深入,請繼續吧!網路上很多優秀的網路程式庫甚至軟體可以為我們「添加功力」。如Apache的HttpCore和HTTPConnection 是兩個和HTTP協定相關函式庫;JGroups是研究分散式通訊、群組通訊的必讀函式庫;接著我們可以研究P2P的軟體包,如Sun公司的JXTA,它可能是java平台點對點通訊未來的標準哦!接著你可以研究成熟得不得了,使用極其廣泛得P2P軟體Azureus! www.sourceforge.net可以下載!
    千里之旅始於足下! Just do it ! (目前我也只研究了net包,其它的會在不久的將來繼續深入。Sun公司因為某些原因沒有公開net的其它實現細節,在其允許將其源代碼以文字的形式加以研究,以及允許將其沒有公開的實作寫入書中時,我很希望能出一本java網路程式設計的書籍,以飧廣大讀者! 、JSP的書也是滿地都是!值得推薦的也僅僅兩三本。實推Addison Wiley的《Servlets and JavaServer pages :The J2EE Technology Web Tier》,又是一本很厚的喔!國外2003年出版、784頁,講得比較全,例子也很多,特別是第八章Filter,舉了幾個不錯的例子。其它所有我看到的關於Servlet和JSP的書都沒有如此深入的! (可能有我沒看到而已)。 O’reilly的《Java Servlet Programming》和《Java Server Pages》相對比較好懂一些,可以讀讀!
    在大家學習Servlet和Jsp之前我還是要提醒一下:
    基本上來說Servlet就是一個實現Servlet介面的、部署於伺服器端的伺服器端的程式罷了!它可以像寫其它任何java應用程式一樣編寫,它可以操作資料庫、可以操作本地檔案、可以連接本地EJB…編寫Servlet程式的一般流程為:
1.     繼承一個HttpServlet類別;
2.     覆寫其doGet、doPost方法;
3.     在覆寫方法的內部操作方法參數HttpServletRequest和HttpServletResponse。
4.     讀取請求利用HttpServletRequest。利用HttpServletRequest你可以操作Http協定的協定頭、可以得到請求的操作方法、可以得到請求的路徑、可以得到請求的字串、以及和請求客戶相關的信息,更主要的你可以得到Cookie和HttpSession這兩個對象。
5.     利用Cookie你可以操作「甜心」物件或寫入HttpServletResponse。
6.     輸出資訊給顧客使用HttpServletResponse。使用HttpServletResponse可以寫入各種類型的協定頭、可以增加Cookie、可以重定向其它URL、可以傳送Http協定的狀態碼給客戶。
7.     利用HttpSession在會話內完成任何你想實現的功能。
    同時Servlet也提供了一些事件和事件監聽器(簡單的觀察者模式而已)。還有就是過濾器(Filter)和包裝器(ServletRequestWrapper、ServletResponseWrapper)――簡單的流的使用和裝飾器模式的使用。
    學習Sevlet、JSP必然要部署到伺服器中,記住通常檔案部署的步驟和參數的設定以及在程式中如何使用就可以了。
    完全理解Servlet後,學習jsp相對比較容易了! Jsp完全建立在Servlet的基礎上,它是為了迎合那些喜歡在Html文件中嵌入腳本(如:PHP之類的網頁程式語言)的程式設計師的需求罷了!學起來也相當的容易!
    一切看起來似乎那麼的風平浪靜,簡單又好學!簡單的表象背後有其複雜的機制。要對Servlet和Jsp徹底研究,你得研究Tomcat等開源軟體的具體實作。它無非就是一個伺服器,在客戶利用網頁透過HTTP協定向伺服器發送請求後,伺服器將此HTTP請求轉化為對應的HttpServletRequest對象,呼叫你寫的Servlet罷了,在你的Servlet中你肯定操作了此HttpServletRequest了吧,同時操作了HttpServletResponse了吧,伺服器就將此HttpServletResponse依照HTTP協定的要求利用HTTP協定傳送給你的瀏覽器了!伺服器端的Jsp網頁在被客戶要求後,Tomcat會利用編譯軟體,使用javax.servlet.jsp套件中的模板,編譯此jsp文件,編譯後就是一個Servlet!以後的動作和Servlet完全一樣哦!
    在Servlet和Jsp的基礎上出現了,所謂的高階技術:JSTL,Struts…無非就是一些標籤和MVC模式的使用。
    繼續前進吧!勝利就在前方! !
 
7. 多執行緒
    一個看起來很神秘,卻很容易上手、很難精通的方向!
    我推薦兩本我感覺很好的書。首先是我第一本能上手看的這方面的書,Sams 1998年出版的《Java Thread Programming》,寫得暴好,很容易讀懂,我有空還時常看當時的筆記!要知道怎麼好你自己看吧!第二本OReilly三次出版的《Java Threads》,最新是2004版,國內好像有中文版,推薦你還是看英文版的吧!書中談到了與多線程相關的N個方向,如IO、Swing、Collection等等。
    給大家一點提示! java類別庫中與多執行緒相關的類別不是很多,主要有:Thread、ThreadGroup以及ThreadLocal和InheritableThreadLocal四個類別和一個Runnable介面;關鍵字synchronize、volatile ;以及Object物件的wait、notify、notifyAll方法!
1          Thread是多執行緒的核心類,並提供了一系列建立和操作多執行緒的方法。
2          ThreadGroup是一個管理Thread的工具類別。
3          ThreadLocal和InheritableThreadLocal提供了一個類似保險箱功能的儲存執行緒物件的類別!
4          Runnable不用說了!
5          synchronize是同步法與同步區塊的核心!當多個執行緒呼叫此方法時,只有一個執行緒可以使用此方法,其它方法阻塞,從而保證被操作物件內部狀態完整性。某個執行緒呼叫帶有synchronize的方法或區塊時會得到該物件的物件鎖,完成區塊中的操作後釋放此物件鎖,從而其它物件可以繼續操作。
6          wait、notify、notifyAll提供了有效的等待/通知機制。 Java語言中每個物件都有一個休息室,任何執行緒在其操作的物件的狀態不滿足的情況下,在該物件的休息室中休息,釋放物件鎖定;當其它執行緒操作該物件後,喚醒休息室中的線程,它們再檢查條件,當條件滿足後,執行對應的操作。
    多執行緒大致上有這麼多基礎的!簡單嗎!這對於一個真正的程式設計師應該是不夠的,真正對多執行緒要有所掌握,請您研究java.util.concurrent套件吧!大師Doug Lea的作品,原先是一個開源的一致性編程的庫,後來被Sun公司併入java類庫。作者的網站上也有另一個版本的該類別庫!值得研究的好東西!Hibernation、OpenJMS等開源軟體都使用了此套件!
   
8. 設計模式
    談到設計模式很多人多會推薦GOF的那本,該書在Amzon上是五星級的推薦書。不過對於學習java沒多久的、特別是java初學者,我很不推薦這本書。主要是該書的例子基本上都是C++的,很多細節沒有講得夠清楚。
    我推薦給大家的第一本是閻宏博士的《Java 與模式》,它是第一本中國人自己寫的關於設計模式的書籍,寫的比較有趣,融合了很多中華民族的文化與觀念,例子、類圖都比較多,且相對簡單!非常不錯的入門書籍――又是大塊頭!
    其次我推薦Wiley出版社出版的《Pattern In Java》一套三本,我才看了第一本,好像第二本不怎麼樣,第三本還不錯!
    第三本是中文翻譯版的關於多線程模式的(很難得的中文翻譯版)中國鐵道出版社2003年出版的《Java多線程設計模式》,將多線程模式講得非常淺顯,配有大量的圖例,每章都有習題,最後有答案!我研究多執行緒模式就是由它開始的!
    第四本,今年出版的Head First系列的《Head First Design Pattern》,秉承Head First系列圖書的優點,大量的類圖、豐富的實例、有趣的註解,值得購買!
    其次在J2EE方向你可以研究閱讀Addison Wesley 2002年出版的《Patterns of Enterprise Application Architecture》,眾多大腕的作品,講企業訊息集​​成的! Sun提供的《J2EE PATTERNS SL500》也很好!晚了推薦那一本Amzon 4星半的《Holub on patterns》,大師的作品,提供了,很值得研究的例子,不過對上面四本不是很熟悉的讀者,最好不要讀它!可能會讓你比較累!
    我學習設計模式經過一段很曲折的路線,前前後後大約看了20本,閻宏博士的《Java 與模式》我看了4遍,還排除我第一次基本沒看懂的看!記得研一時老師給我們講了GOF的那本,作為選修課,我和它們計算機系的碩士、博士們一起,到最後一個班40-50個人,不超過3個人明白,我也沒有明白任何一點(基礎差吧――主要我對C++語言一點都不了解),憑我不伏輸的性格,我認為我對java語言理解還可以,我就借了《Java 與模式》,結果還是基本沒看懂。很有幸的是讀三時,聽過了上交大饒若楠老師關於Java OOP語言的講座,我懂了組合書籍模式等三種設計模式後,對其它模式有了強烈的興趣和要征服它的願望!工作後我買的第一本就是《Java 與模式》,第一遍花了2個月研究了這個1000多頁的大塊頭,後來第三遍15天左右就可以搞定,筆記記了一大本!從此一發不可收拾。
    選對書、埋頭研究。相信很快就會入門的!
 

    學習Java語言8個簡單的部分,這只是我們研究Java語言的開始!這些都懂了充其量一個java程式設計師而已,後面的路很長很長!我們可以繼續研究資料庫實現的原始程式碼、Servlet伺服器的原始程式碼、RMI、EJB、JNDI、面向方面程式設計、重構、ANT工具、Eclipse工具、Spring工具、JBoss、JOnAS、Apache Geronimo等J2EE伺服器!研究了這些你可能會成為一個出色的J2EE Architecture!你可以繼續研究剖析器、編譯器、JNODE(java寫的作業系統)…

以上是分享Java程式設計師應該閱讀的好書的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn