Java學習推薦書籍

banq發表於2003-11-08
Java學習推薦書籍



彭晨陽 2003年10月13日


書名:Java程式設計思想
URL: http://www.china-pub.com/computers/common/info.asp?id=7241
評論:
其實這本書並不適合作為Java入門使用,有位道友人為:看這種書有種看馬克思選集的感覺,車軲轆話來回說,本來很簡單的概念, 看過他的複雜的例子後,就雲山霧繞了。當然,治療失眠的效果是不錯的。

我本人讀這本書也是讀了N多遍吧,總是感覺無法掌握其中一些概念, 不過在實踐中遇到一些技術問題,會到書中查詢,這樣對書的理解不斷加深, 但是一直無法理解這本書想說的程式設計思想到底是什麼?已經隱隱約約地感覺到了,但是不能完全抓住。

只有我讀了GoF的”設計模式“這本書以後,我才完全掌握這本書所說的程式設計思想, 應該說,這本書是介於Java基礎技術和設計模式之間,因為是從技術細節角度出發,並且追求物件導向程式設計方法, 似乎將一些簡單的事情搞得複雜化,主要是因為沒有從OO設計高度深入闡明如此複雜化的原因。



書名:設計模式:可複用物件導向軟體的基礎
URL:http://www.china-pub.com/computers/common/info.asp?id=684
評論:
這本書應該說比Java程式設計思想還要難讀的一本書,對於沒有程式設計經驗的初學者真是 猶如天書一樣,這類讀者我還是建議多理解一些Java原始碼,多練習做一些專案,多學習和掌握一些技術細節,當 技術掌握到一定程度,量變會產生質變,思維觀點會更側重於設計,這時讀這本書會順利得多。

很多有經驗的程式設計師經常擁有自己樸素的程式設計思想,如:程式設計要有靈活性,要有可預見性,但是關鍵問題是如何實現呢? 讀這本書應該說是從理論上幫助你解決這個問題,它提出了透過設計模式或框架來幫助程式實現系統的靈活性、可重用性、可擴充性和可伸縮性(預見性)。

這本書的引言部分很重要,也很通俗易懂,在引言部分闡述了設計是如何支援變化的,設計模式和框架從字面上理解 好像是限制,不變的意思,是與支援變化正好相反,實際不是這樣,設計模式和框架正是用來支援變化的。

一個軟體系統可以看成由兩個部分組成:“新”和“舊”。所謂“新”就是針對具體應用的新設計和新程式碼;而所謂“舊”, 就是重用了以前類似功能的軟體元件或軟體設計,後者正是設計模式和框架大顯身手的地方。

讀了這本書,確實讓有樸素的程式設計思想的程式設計師有一種質的飛躍和提高;外國人形容猶如“耶穌重生”感覺, 中國人說:好似練習武功中打通了六脈,重新上了一個新層次,又猶如禪的一次頓悟,思想的樂趣無不體現其中。



書名:實用J2EE設計模式程式設計指南
URL:http://www.china-pub.com/computers/common/info.asp?id=8368
評論:

前面兩本應該說是OO程式設計基礎,有了前面兩本書的“功底”,在學習J2EE/EJB時要容易得多,因為J2EE/EJB就是一種框架, 可以從EJB/J2EE具體使用和技術學習中體會仔細框架的概念。

這本書是從J2EE具體實踐角度重申了系統可重用性、可擴充性和可伸縮性重要性和如何具體實現,實際上,它是一本 教你如何解決具體問題的書,Wrox網站有其中“安全管理模式”一章的PDF版本,它系統闡述了使用者註冊系統中單點登陸和 和統一驗證的J2EE容器實現,透過J2EE容器實現使用者註冊系統,就無需編制任何Servlet或ServletFilter程式碼自己來實現 這兩個功能,因為它們已經作為模式融入了J2EE框架設計中了。

透過閱讀這本書,將設計模式/框架+J2EE實戰兩者緊密結合起來,真正實現了程式設計的靈活性和可預見性。當然該書的實戰例項還是少了一些,而且目前從設計模式和框架角度探討實踐應用的書籍不多,這裡我就“自私”一下, 本人的“java實用系統開放指南”在這方面做了進一步的探索和論述,即將由機械工業出版社出版,敬請關注。


書名:精通EJB (第2版)
URL:http://www.china-pub.com/computers/common/info.asp?id=4515
評論:
前面三本書都是從設計角度考慮推薦的,設計是程式設計的靈魂,但是隻有靈魂沒有肉體支援也是虛的,這本書從具體技術原理角度 討論了EJB的構成原理和使用方法,注意一定要閱讀第2版,第2版是針對EJB 2.0,現在普遍使用的是EJB 2.0技術。

EJB的學習分兩個方向:使用方法和構成原理,學習EJB使用方法相對簡單一點,因此閱讀這本書時,要明確你的宗旨,時刻 記住你的方向,推薦初學者先從學習EJB使用方法入手,因此書中有關原理方面的就跳過,等你學會使用EJB後,再返回研究 “為什麼這樣做”的問題。

EJB學習使用分Session Bean和Entity Bean以及MDB等幾種,學習途徑建議下列步驟:
1.Session Bean開始學習(不學習實體Bean),透過書中使用方法,在Session Bean中直接呼叫SQL語句運算元據庫。
2.學習J2EE設計模式中的DAO,將第一步的Session直接呼叫JDBC升級為Session+DAO+JDBC。
3.選擇一種持久層技術,如果願意學習實體Bean,這時可以研究CMP 2.0或BMP,當然也可以學習其它持久層技術如Hibernate或JDO等, 實現Session+DAO+Hibernate等。

最後,該書還介紹EJB叢集計算技術,該技術使用EJB的重要原因之一,透過叢集技術,可以實現多臺伺服器的分散式計算,從而 增強系統的計算能力,而這些都無需開發者自己開發這些技術細節,透過EJB容器配置就自動完成,因此,一個EJB應用系統可以單機 執行,也可以迅速方便地擴充套件為多臺甚至幾百臺伺服器上執行,這就體現了EJB強大的伸縮性。



書名:Core J2EE Patterns (Core Design Series): Best Practices and Design Strategies第2版
URL:http://www.china-pub.com/computers/common/info.asp?id=13414
評論:
其實,EJB/J2EE技術本身不復雜,使用也很簡單,之所以很多人認為不好用,我認為還是因為其中參入了設計模式和框架概念, 所以還是有必要了解一下J2EE的核心模式,這是第2版的J2EE核心模式。

曾經收購易趣30%左右股份的eBay公司首席架構師John Crupi參與了編寫,eBay已經使用了多年的J2EE系統,在這本書中, John Crupi從eBay J2EE實踐角度提出了一些新的設計模式,實際就是他們實踐經驗的總結。

要完全理解這本書,需要配合具體應用系統,對應Sun的Petstore(http://developer.java.sun.com/developer/releases/petstore/)
學習J2EE的設計模式,是一種好的方式,當然,除了設計模式以外,Petstore其它設計特點是有爭議的,例如介面的WAF框架設計 (過於複雜,現在更多使用的是Struts);還有其Web與EJB介面呼叫框架,都存在一些問題。

個人認為這本書介紹的Service Locator模式、DAO模式、TO模式(DTO模式或VO)是非常實用和重要,幾乎每個J2EE系統都必須使用到, 其它有關介面View模式,如果你選擇Struts這樣MVC模式框架,就不必太關心,因為Struts框架本身已經將這些模式包含進入。





小結:
由於Java/J2EE發展迅速,相關書籍的出版總是有一定滯後,而且理論結合實踐的實戰方面書籍相對比較少(當然,從一個角度 理解,設計模式可以看成是實踐經驗的總結),因此,第六本書就虛位以待吧,希望有更好的Java書籍出版。

相關文章