技術大潮中不迷失方向!J2EE修煉之四書五經 – JAVA編程語言程序開發技術文章

J2EE其實沒有四書五經,因為J2EE一直如洶湧澎湃的大江,推陳出新,不斷高速發展,這是一種帶領我們走向未來的技術。當然,如何在這種氣勢如虹的潮流之中不至於迷失方向,需要相關指南性書籍的引導。

本文將從線程和模式兩個方面推薦J2EE書籍,這兩個方面正好是兩種不同的方向,線程是從微觀、底層機制入手;而模式則是從設計高度來看待J2EE。

  線程(Thread)

  首先,線程是很多J2EE初學者容易忽視的一個基本知識,可以說,無論你是從Java世界的哪一扇門進入J2EE的,線程是必經之道。

  已經不記得在哪裡看到過下面一段英文:

  在過去,大概隻有勇敢的程序員才勇於使用pthread和Win32線程,現代語言如Java正試圖在編寫一些令人恐懼的應用如並行計算等方面來挽救我們。

  J2EE的Servlet和EJB確保我們不用擔心線程以及同步等問題,我們隻要象往常一樣編程,容器自動會使用線程池等技術來支持我們的應用。

  由此可見,線程是J2EE最基本的底層機制,每個Servlet/Jsp程序其實是一段線程程序,如果你不懂得線程/多線程的一些原理,如何能嫻熟駕馭J2EE的Servlet/Jsp?

  在線程計算方面有很多權威,Dou Lee無疑是這方面的傑出代表,他的並行計算包已經加入瞭最新的JDK1.5版本中,他的書籍都屬於奠基性質,但是,這樣書籍可能不是很適合隻想對線程進行瞭解的J2EE初學者。

  《Java線程編程》(Java Thread Programming)

  是我推薦的第一本有關J2EE書籍,在這本書中,作者以簡單的例子,形象易懂地從單線程講解到多線程,線程池(Thread Pool)、並發同時訪問對象和變量(Concurrent Access to Objects and Variables),這些都是我們在平時Servlet/Jsp編程中經常會發生疑惑的地方,在這本書的案例中,作者清晰明瞭地給我們展示這些細節而有重要的技術。同時,也讓我們深刻地理解瞭直接編制多線程應用是一件“令人恐懼”的事情。

  很有意思的是,我在一傢網上書店社區裡也發現瞭與我有同樣見解的帖子,稱這本書是“一本讓經典成為過去的書”

  設計模式

  線程世界就象微生物世界一樣,復雜且幾乎沒有邊界,作為信息系統的程序員如果太執著於這樣純技術的微觀層面,可能浪費太多寶貴時間和精力,在基本掌握多線程機制後,需要更加關註J2EE的設計應用瞭。

  J2EE是Java世界中一個獨特的框架或標準,所以,我們首先需要掌握基於Java的設計應用,這些設計應用技巧,是先行者經過長期實踐總結出來的心得,他們稱之為設計模式。在J2EE應用中,隻有大量使用設計模式,才能體現出分離和解耦的最高宗旨,才能使得自己的J2EE系統脈絡清晰、層次分明,這樣的系統才真正具有良好的可伸縮性、穩固的健壯性以及方便的可維護性。

  GoF 23種設計模式已經成為經典,2002年我在我的網站J道發表23種設計模式Java詳解時,竟然在中文Google裡很難發現這方面的資料,這讓我萬分驚訝,也許國人確實是非常實在,隻對算法、數據結構等這樣看得見、摸得著的概念感興趣,其實我一直反復和別人講:設計模式不是純抽象概念,它是實踐的總結,如同UML一樣,是一種交流和編碼實現的語言。

  我在2002年幫朋友購買瞭GoF 23種設計模式的中文版:《設計模式:可復用面向對象軟件的基礎》,它是2000年12月第2次印刷的版本,這樣經典必讀書籍,8000冊在2年時間內都沒有銷售完畢,相比那些喧囂炒作的書籍,在出版幾個月內銷售過萬,越發顯得我們這個社會的浮躁和急功近利瞭。

  當然,這本薄薄的書雖然由四個國人鼎力協助翻譯,想必他們也殫思竭慮,盡瞭最大努力瞭,可惜書中還是有很多翻譯欠妥之處,影響瞭它的銷量。

  由於這本經典的GoF設計模式比較難懂,初學者更多應該是從實例應用中瞭解和掌握GoF設計模式,相關提供實例應用的書籍有下面幾本:

  Mark Grand的Patterns in Java系列;

  美籍華人閻宏的《Java與模式》;

  筆者的《Java實用系統開發指南》;

  EJB

  EJB是J2EE中一個重要組成部分,J2EE推薦將你的業務功能核心放在EJB中實現,EJB類似肯得基的“全傢桶”,將實際中需要的基礎功能全都打包在一起瞭,如果你是個挑剔或個性化的客戶,我想你可能不會隻滿足於“全傢桶”。

  不管“全傢桶”是否合適你,瞭解它裡面裝的是什麼是一個必需的過程。掌握EJB需要從兩個方面著手:基本原理和如何使用。

  《精通EJB(第二版)》(後註:http://www.javafan.net/softview.jsp?ID=110)

  是對EJB原理講解得比較透徹,但是書中將EJB一些本質原理推卸給瞭Corba,而對Corba又沒有仔細介紹,我認為初學者應該在這裡適可而止,如果你非常對EJB底層實現感興趣,我推薦閱讀JBoss的源碼,其實JBoss源碼在你孜孜不倦的鉆研之勁攻擊下很快會土崩瓦解。

  對象池(Object Pool)、RMI和事務機制應該是EJB原理掌握三個方向,這三種技術方向又可以推薦很多書籍供學習研究,這裡就不說瞭。

  EJB主要分EJB容器和EJB應用系統,初學者更多精力應該關註如何構建EJB應用系統,由於EJB提供功能強大且非常有特點,因此,使用他們要非常小心,遵循一定的前提和規則,由此,EJB設計模式是不能不瞭解的。

  《EJB設計模式》(後註:http://www.javafan.net/softview.jsp?ID=69)是這方面的經典之作,在書中,作者指出瞭使用CMP註意特點、DAO模式的重要性、DTO模式的變種等。閱讀本書的同時,如果參考SUN的PetStore源碼學習,將會起到事半功倍的效果,

  看完上面兩本書,自己動手實踐非常重要,EJB使用中關於EJB reference配置比較麻煩,其原理是這樣:調用者—- > EJB Reference —> 被調用EJB的JNDI名稱 —- >被調用EJB,這些細節使用問題隻有實踐時才能碰到,也可以從網上尋找一些這方面的電子教程實例。

  隻有調試瞭一兩個EJB實例,這時你才可以站出來表達你的想法:喜歡或不喜歡?架構選型時也可以提供參考意見:是輕量型還是重量型?盲目排斥EJB或認為EJB是唯一解決方案等兩種極端觀點是要不得的,條條大路通羅馬,伸縮和性能是關鍵。

  這裡推薦一本從純設計角度看待EJB/J2EE的書籍:Rod Johnson的《J2EE設計開發編程指南》,英文是Expert One-on-One J2EE Design and Development,Rod Johnson在書中從一個完美的設計角度指出瞭EJB缺點,這些缺點他是用黑體標識,非常醒目,同時,他將如果不使用EJB所帶來的額外工作量使用正常小字體標識瞭,算是輕描淡寫吧。當然,Rod Johnson為瞭將其理想的設計落實為代碼,主持瞭Spring框架開發,如果J2EE領域有一個既符合完美的設計要求,又能支持成熟應用,同時又是業界標準,那是一個多麼令人向往的事情,Spring框架至少在這方面做瞭有益的探索。

  集群、Web服務和資源整合

  對於中大型軟件系統,集群和Web服務是必需掌握的技術,目前相關書籍不多。如何將J2EE新技術和現有資源整合,也屬於一個探索性的領域,期待這幾個方面有好的書籍問世。

發佈留言