Java 框架到底怎麼了

333111444發表於2008-02-21

轉自ROR實踐一書

如果你作為一個Java 程式設計師從事j2ee開發的話,你一定會使用到眾多應用程式框架。沒有任何一個語言會象java 語言社群那樣活躍,任何一種新的 程式理念都會很快在網上出現相應的開源實現。對應最常用的網站開發模式MVC,每一層都會有很多框架,Struts, Tapestry 屬於控制器層 (C), Velocity 框架屬於檢視層(V), 你使用的資料持久層可能是 Hibernate, iBatis, OJB, 或者是 JDO 的 眾多開源實現中的任何一個,比如 JPOX 。 但是你的選擇太多,未必是件好事,並不是任何人都能採用正確的框架來做正確的事情。如果你的開發平臺 是 .net,那麼你也許會避免這種情況,通常你只要安裝一個 Visual Studio .net 作為開發工具,然後安裝一個 MSDN 來查詢資料就可以了。

[@more@]

作為一個Java 程式設計師,我覺得Java一些比較明顯的問題,首先是Java 太複雜,其次Java 太面向程式設計師了,而不是面向使用者。相對 C++ 來說, Java 已經很簡單了。現在Java 程式設計師數量如此多就說明了這點。但 是正如有人曾經說過的那樣,linux 上,你很容易區分出誰是高手,在 Java 領域中就不那麼容易了。我就經常發現身邊的同事還在犯很低階的概念性錯誤,他們甚至在無法準確地區分什麼是介面,抽象類和 Servlet的情況下仍然可以從事多年的j2ee 開發。但為什麼又說 Java 複雜 呢,因為它完成一件事情,需要太多不同的技術來實現了。這樣對於那些概念不很清楚的程式設計師來說,你如何能保證他們作出正確的選擇呢?而眾多框架中有沒有多少提供一站式服務的。最近冒頭的 Spring 框架提供的服務在眾多的框架中算是最多的了,但是它又有個新問題,就是它還是太面向程式設計師了,而不是 使用者。為什麼這麼說呢?框架本來就是面向程式設計師的,這難道不對嗎?Spring 雖然提供了眾多選擇(但是還是不夠多,它本身沒有ORM ),但它沒有提供簡單的使用方式,所以我們只能說它是面向程式設計師的。絕大多數java框架都存在這個問題,就是學習曲線比較高。我覺得學習曲線的高低是區分一個框架是否是面向程式設計師還是使用者的關鍵,我想這主要表現在框架的易用性上。其實框架最終的使用者還是程式設計師,之所以用使用者程式設計師來區分,是因為一些面向程式設計師的框架比較難以使用,雖然提供了大量的基礎設施和零件,但是還是要求程式設計師自己來組裝。而面向使用者的框架就簡單一些,使用者只要按照說明書來使用 就可以了。為什麼 Ruby on rails 會在 Java 社群引發轟動,我想原因就在於此,它提供了一個一站式面向使用者的簡單易用的框架,這是 java 框架所缺乏的。為什麼 Ruby on rails 能做到這點,難道 java 本身做不到嗎?事實是眾多 Java 框架的設計者不 這麼做,可能是他們的思維已經限制在如何用模式設計一個好的框架上了,而沒有在框架的易用性上做更多文章。使用過 Spring 的人就知道它 的 xml 配置檔案會漸漸的膨脹,雖然我們很容易將其分解為更多的小配置檔案來解決這個問題。但是在使用 xml 配置檔案上,它沿襲 了 Java 程式設計的習慣性概念:“Java 是最好的程式語言,XML 是最好的描述資料的語言,兩者的結合是最完美的。如果一個應用不使用 xml 來描述,那麼它就不是好的 java 應用

但是 ruby on rails 就是在這點上和眾多 java 框架區別開來,才達到了框架易用性上的一次突破。這個思想貫穿了 Rails 設計的始終:習慣約定優於配置。 舉個例子,通常我們寫java web 應用程式,都會按照 MVC 來給對應類做區分,我個人喜歡將 Controller 類放在 web 目錄中,將 View 類放在 view 目錄中, 將 model 類放在 domain 目錄中。但是不同的人有不同的設定,不同的命名,如何讓框架知道這些不同的目錄呢, java 框架的解決之道, 只能是透過 xml 配置檔案讓它瞭解這些資訊。而 rails 的解決方式就是: 目錄結構我來定義,你只要在我定義好的目錄中放東西就可以了。 這也 就是為什麼 rails 中很少有配置檔案(但不是沒有)的一個重要原因。雖然思想很簡單,但是它帶來的好處就是,Rails 的開發效率 是 java 開發的 10 (這是 rails fans 宣稱的,不過我相信這點,相信看完這篇文章你也一定會的)。那麼光這點就能讓 rails 開發比採用 java 更快了嗎?不完全是這樣,因為這還得益於 rails 的另外一個設計理念:更少的程式碼。並不是任何語言都能那麼宣稱的,rails 實現這點完全得益於它的設計語言 Ruby 。使用 Ruby 你的確能用很少的語言寫很多的功能,這是其他語言所無法實現的。想要掌握Rails,你一定要了解 Ruby。曾經有人說:Zope (著名的 python web 框架) python killer 級應用,python zope 的秘密武器。 我想這句話用在描述 rails ruby 的關係再合適 不過了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12058779/viewspace-999798/,如需轉載,請註明出處,否則將追究法律責任。

相關文章