讀古今文學網 > Java程序員修煉之道 > 13.2 選擇Web框架的標準 >

13.2 選擇Web框架的標準

Java這麼多年的頂級編程語言地位不是白給的,Java中可供選擇的Web框架有很多。最近基於其他JVM語言(比如Groovy、Scala和Clojure)的Web框架也雄起了。但不幸的是,這麼多年來還沒有一個能在這一領域確立自己的霸主地位,選哪個框架完全看個人偏好。

Web框架應該能提供大量幫助。必須能用一些標準進行評估,它能滿足的標準越多,開發Web應用的速度可能會越快。

Matt Raible1總結出了評判Web框架的20條標準2。表13-1對這些標準作了簡要介紹。

1 AppFuse(http://appfuse.org)的作者,AppFuse是一個Web開發基礎平台,它集成了Java中各種流行的Web框架,並提供了所有Web系統開發過程中都需要開發的一些功能,比如登錄、用戶密碼加密、用戶管理、為不同的用戶展現不同的菜單。它可以自動生成40%~60%的代碼,還自帶了一些默認的CSS樣式,使用這些樣式能快速改變整個系統的外觀,還具備自動測試的能力。——譯者注

2 Matt Raible, 「Comparing JVM Web Frameworks」 (March 2011), presentation. http://raibledesigns.com/rd/page/publications。

表13-1 Web框架的20條標準

標準示例 開發人員的工作效率能用1天或5天搭出一個CRUD頁面嗎 開發人員的看法用起來有意思嗎 學習曲線學了一個禮拜或一個月後能幹活嗎 項目健康狀況項目陷入絕境了嗎 開發人員的充足性能找到經驗豐富的開發人員嗎 就業趨勢將來能招到人嗎 模板化遵循DRY(不重複自己)原則嗎 組件自帶日期選擇器之類的東西嗎 Ajax支持客戶端的異步Javascript調用嗎 插件或附加項能加上Facebook集成之類的功能嗎 擴展性默認的控制器處理的並發用戶數能到500+嗎 測試支持能做測試驅動的開發嗎 I18n和l10n自帶其他語種和地域的支持嗎 校驗能輕鬆校驗用戶輸入並迅速反饋嗎 多語言支持能同時用(比如說)Java和Groovy嗎 文檔/教程的質量常見的用例和問題在文檔中都有體現嗎 出版圖書有沒有行業專家用過它,並分享了自己的戰鬥事跡 REST支持(服務器端和客戶端)它能按HTTP的設計宗旨使用該協議嗎 移動支持是否很容易就能支持Android、iOS和其他移動設備 風險程度是用來做「保存食譜」的應用程序或是「核電站控制器」

你看到了,這個清單很長,在做決定時,你需要想好各個標準的權重。不過Matt很勇敢3,他最近在這一領域做了一些研究,儘管其研究結果引發了激烈的爭論,但真相總算是開始浮現了。如果給那些對Web快速開發最重要的標準賦予較高的權重,各種框架的得分(總分為100)如圖13-2所示。這些標準應該是:開發人員的工作效率、測試支持和文檔的質量。

圖13-2 Matt Raible對JVM框架的加權評級

3 你應該能想像得到,人們對於自己喜愛的Web框架有多大的熱情!

不同的人需求可能會不同,在http://bit.ly/jvm-frameworks-matrix上可以很容易地修改Matt的權重,運行自己的分析,產生自己的圖形。

提示 在你選定框架之前,我們強烈建議你在兩到三個框架上按自己的標準做一些功能原型。

現在你知道該用哪些標準進行評估了,並且還能利用Matt提供的工具,所以在選擇Web快速開發框架時,你可以做出明智的選擇。在我們的加權標準分析中脫穎而出的是Grails框架(Compojure沒有名列前茅,但因為它還非常年輕,所以我們預計它在不久的將來能迅速躥升到領導陣營中)。

我們來看看獲勝者Grails!