寫在“輕量級開發”聊天活動之後

因爲小蛇,我之前爲CSDN將要開始的“輕量級開發”聊天活動準備問題,於是寫了一篇《Spring的疑問若干》。前天,這個聊天活動結束了,我因爲搬家,錯過了時間,沒有第一時間看到聊天記錄。不過現在查看了聊天記錄之後,我將之前的問題整理了答案:

1、新手達到什麼程度可以開始spring的學習?

答:最簡單的來說,一年多持續的Java Web應用開發經驗,基本上就沒太大問題。 目前公司團隊中,幾乎所有團隊成員都是從進入公司開始學習應用Spring,從學習的速度來觀察,基本上一年的實際WEB開發經驗,已經足以產生理解Spring基礎結構的基礎。這時候,只要有適當的資料加以輔導,應該學習曲線不會太過難看,呵呵。(夏昕的回答)

最開始提出這個問題時,我的考慮是對於spring,新手上手之時會畏難,心理沒底從而不知道如何下手,同時會懷疑自己是否具有學好spring的能力。而如果專家能夠給出一種說法,相信能夠幫到很多新手。

以下是我的理解,一年時間並不是必須的,實際上學習spring最重要的條件是具備web開發的基礎知識,至少有一個完整的項目開發經驗(幫助你理解應用開發中的各個不同層面),對MVC/ORM有基本的認識,這個時候再有一兩本合適的入門書(例如《Spring技術手冊》)就perfect了。

 

2、學習J2EE開發的人,不學習spring可以麼?

答:可以的啊!並沒有規定一定要學過J2EE,纔可以學習Spring,也沒有規定一定要學過Spring,纔可以學習J2EE,只是,學習Spring,甚至是一些Opensource project,重點是瞭解其精神,學過Spring,有助於您在J2EE開發時的設計,事實上,Opensource界在Java的設計精神上取得很大的勝利,在未來的Java EE中,有很多都是借鏡Opensource界的經驗,具體就是採用了Spring/Hibernate的一些設計精神,在這種情況下,學習Spring,或說過學過Spring/Hibernate等,多少有助於瞭解將來的Java EE。 (林信良的回答)

深深的同意。林信良自己是SUN教育訓練中心講師,談到學習問題自然很有見地。剛開始學技術,大家都會有這樣的感覺,.net比Java上手。這既有微軟的原因,同時也跟Java學習的特點有關。學習java意味着你需要花大量的時間去深入瞭解細節,從而理解各種J2EE技術的內涵。學習Java EE的人,未來最大的收穫應該是來自於設計思想,而不只是技術本身。

3、對spring的學習和應用有沒有能力程度的區分?(有的話,依據是什麼)

答:對Spring的學習和應用,很多情況下是受制於學習者對於“設計”本身的領悟。從某些方面來講,可能好奇心比所謂的能力更加重要一點。(夏昕的回答)

嗚嗚,夏帥哥的回答讓我有點鬱悶。出於私心,我是期望他能夠定義出他認爲的層次區分的,我認爲這樣的能力區分能夠爲學習spring的人提供方向導引。

4、學習spring的好書和論壇有哪些?

答:我入門Spring時,夏昕先生的Open Doc給了我很大的幫助,Spring in action是本入門的好書,Spring的參考文檔一定要看,另一方面,也可以看看Professional Java Development with Spring Framework,當然,最重要的,如果有時間,回去翻翻J2EE without EJB。(林信良的回答)

 其實近期國內出版的幾本書籍,我都看過,都是很不錯的Spring參考資料。 林先生的就不錯 :) 畢竟這也是出版社在諮詢了很多專家之後確認的出版計劃。 至於論壇,csdn,javaeye和cjsdn都值得推薦。csdn以人氣取勝,javaeye和cjsdn則相對討論較爲深一點,適合有一定經驗的Spring使用者。(夏昕的回答)

嘻嘻,提這個問題,純粹是爲了讓專家給新手指路,同時也宣傳好書。

5、什麼情況下適合將spring納入項目中加以應用?(最適合spring應用的場景有哪些)

答:使用Spring,最怕的是爲了Spring而Spring,爲了IoC而IoC,爲了AOP而AOP,這樣的話,Spring對您沒有好處,有幾點可以參考…

1. 當元件出現重用時,才開始考慮使用 Spring IoC。

2. 元件動用到外部資源時,使用 Spring IoC。

3. 當元件需要 AOP 時,再考慮設定到 Spring xml。

4. 能不用 Spring IoC 就不用!

5. 不要為Spring而Spring。

6. 不要為IoC而IoC。

7. 不要為AOP而AOP。

簡單的說,採XP的方式,可以讓您考量到,何時該採用Spring,何時該採用IoC、AOP等。 這邊有個案例可以參考: http://www.javaworld.com.tw/roller/page/ingramchen?entry=2006_2_1_KeepSpringIoCCoarseGrained

另一方面,Spring在JDBC這方面所提供的封裝,其實蠻值得分開來看看的,可以省去不少的功夫。 (林信良的回答)

這樣的答案爲大家提供了思考和進行選擇時的原則:)

6、ruby on rails出現後,spring是否能夠適應現在互聯網敏捷開發的要求?

答:可能這不僅僅是Spring的問題。而是Java WEB開發與ROR開發之爭了。目前來看,Spring還談不上是一個WEB的RAD框架,它本身還是定位於一個微內核容器,希望會有相關的子項目出現。 對於java web開發中的RAD感興趣的,可以去看看RIFE,可以說是ROR的Java實現,這其實很早就出現了。(夏昕的回答)

gigix前不久在csdn搞了一次“敏捷開發”的聊天,問這個問題純粹因爲受上次聊天活動的影響。

7、有多少企業將spring應用於現有的開發當中?

答:這個問題沒有被提出來,不過答案應該是比較顯然了,呵呵,很多企業都在用。當時提出這個問題是打算湊數,小蛇讓我提10個問題,我的腦袋想破了。。。。:(

_______________________________________________________________________

補充的幾個問題:

1、相比較僅僅使用jsp或者struts等簡單框架的開發,使用了spring的web應用,其性能如何?

答:客觀來講,Spring的微內核容器的確會在一定程度上消耗額外的系統性能。 不過,除非對於併發性能(比如超大規模論壇)、實時性能(比如超大規模信用卡在線交易系統)關鍵的業務系統,我還是推薦使用Spring進行開發。 Spring爲我們帶來的系統結構和開發上的幫助,遠遠可以抵消這部分損失。 (夏昕的回答)

呵呵,JavaEE中提到的複雜技術以及Java領域流行的框架都是爲非一般業務服務的。90%的問題,我們使用JSP+Servlet就夠了,但如果僅僅使用JSP/Servlet這些簡單的技術,客戶無法相信它們能夠達到穩定性和實時性等要求,而本身系統的擴展能力都會受到侷限。

2、spring能夠粘合不同層面的解決方案,但無論是MVC層還是ORM層,Java領域從來都不缺少好的框架,我們使用spring時,在這些框架中做選擇的依據是什麼?

答:選用框架的依據,主要是考慮穩定性,例如Struts,雖然它是個相對古老的框架,但穩定性高,也許就現在的設計觀點來說,它舊了,但開發不是追求流行,不是最新的框架就最好,另一點,選擇框架的一個重點常被忽略,那就是人員培訓,一個好但複雜的框架,一個好但文件缺乏的框架,用了好嗎?開發不是一個、兩個人的事,而是衆人的事,我看過很多公司爲了追求流行而忽略這點。 (林信良的回答)

Java的開源事業空前繁榮,正因爲這樣,java開發人員往往面臨的選擇很多,同時知識的更新速度要求很高,因爲不學習就會迅速的在個人知識能力上落後於主流。但個人能力與產品開發是要把握平衡的,開發過程中最重要的是採取合適的方案去完成項目,並且對後續工作提供足夠的支持。我自己看到的多數資料中,框架選擇問題主要集中在MVC層和ORM層,Struts/Webwork+Spring+Hibernate/iBatis的選擇是主流。

3、Java領域的開源事業空前繁榮,spring作爲期待包容開源框架的產品,它的研發更新速度是否能夠適應Java開源領域以及企業應用領域的需要呢?

答:從目前的情況來看,Spring已經做到了這一點。很多新開發的企業級應用系統,已經建立在Spring框架之上。(夏昕的回答)

這個問題我沒有設計好,當時期望讓夏昕與林信良去探討的是未來spring的發展方向以及web framework的發展趨勢。因爲所要問的內容太過抽象,所以沒有組織出合適的提問詞句:(

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章