Java 框架到底怎麼了
轉自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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Shit!我的host到底怎麼了?
- 從500瘋漲到1200!《健身環》到底怎麼了?
- HTTPS 到底加密了什麼?HTTP加密
- 營收、淨利雙降,蘇泊爾到底怎麼了?營收
- 我剛開始學習java,我什麼也不懂,框架到底是什麼,沒有框架可以使用java嗎Java框架
- vue $set到底幹了什麼Vue
- 怎麼使用路由框架Fluro?Flutter的這個框架太優秀了!路由框架Flutter
- Java原始碼分析:HashMap 1.8 相對於1.7 到底更新了什麼?Java原始碼HashMap
- PS4獨佔連續跳槽,獨佔政策到底怎麼了?
- Java到底是什麼呢Java
- ui餓了麼框架UI框架
- RabbitMQ和Kafka到底怎麼選?MQKafka
- 自動化框架到底是什麼?框架
- Promise到底解決了什麼問題?Promise
- new操作符到底幹了什麼?
- 頑皮狗到底做錯了什麼?
- new操作符到底幹了什麼
- 模型中到底什麼決定了效果模型
- 一份來自大牛的招聘感悟: iOS開發人群到底怎麼了?iOS
- 一封來自大牛的招聘感悟: iOS開發人群到底怎麼了?iOS
- RabbitMQ和Kafka到底怎麼選(二)?MQKafka
- iOS_Model層到底怎麼用?iOS
- HashMap到底是怎麼put的?HashMap
- 好程式設計師Java學習路線分享Java框架怎麼搭建程式設計師Java框架
- Java到底是什麼?學習java可以做什麼呢?Java
- 學Java到底用什麼電腦好呢?Java
- 好程式設計師Java培訓分享Java的三大框架怎麼學?程式設計師Java框架
- 這遊戲到底怎麼了? 一年後,再看《刺客信條奧德賽》遊戲
- 震驚!又一女乘客跳車!網約車平臺到底怎麼了?
- 卷向位元組碼-Java異常到底是怎麼被處理的?Java
- MVC、MVP、MVVM,我到底該怎麼選?MVCMVPMVVM
- Webpack 中的 sideEffects 到底該怎麼用?WebIDE
- Flink CDC 3.0 耍起來到底怎麼樣?
- 當初,我怎麼會頭腦發熱選了Python!Java VS Python怎麼選?PythonJava
- Web 前端單元測試到底要怎麼寫?看這一篇就夠了Web前端
- 不要再問我Java程式是怎麼執行的了!Java
- Java佇列同步器(AQS)到底是怎麼一回事Java佇列AQS
- JS繼承,中間到底幹了些什麼JS繼承
- 精益轉型失敗到底忽略了什麼?