作爲Java領域最Railsful的框架,Play有如一股清新之風,以不破不立之勢,一掃以往JavaEE開發臃腫龐雜之惑,迅速建立起了獨特的簡單之美。Play框架架構於標準的Java體系之上,開發起來卻與Rails框架非常神似;其框架本身的核心代碼只有不到2萬7千行(含註釋),可謂小巧精緻,非常極簡主義,卻包含了從Web框架到對象持久、從動態編譯到單元測試、從緩存到異步作業框架、從插件到模塊擴展體系等衆多功能,是一個全棧框架——“All you need to create a cool web application”;它吸收並重用了大量已有Java類庫,卻依然能夠獨樹一幟、標新立異。
如果說當年的Spring框架,是以“JavaEE without EJB”打出了響亮的口號,將傳說中的EJB組件技術和昂貴的EJB容器轟下神壇;那麼現在的Play框架,則類似“JavaWeb without EE”,甚至不需要Servlet,它更徹底地宣稱,自己是一個代替企業級Java框架棧的、清爽的平臺。
Play框架一開始就宣佈,這是一個“無痛的Java框架”,關注於開發人員的生產力,針對RESTful架構,是敏捷軟件開發的絕佳搭檔:
1、沒有了“編譯-打包-部署”,直接“修改-保存-刷新”;
2、非常詳細的編譯錯誤提示
3、簡單的無狀態MVC架構
4、HTTP直接映射到代碼調用
5、高效的模板引擎
6、強化的JPA
7、測試驅動開發
8、全棧式應用框架
我把以上幾點稱爲其八大“美學”特徵,但是,在試用了Play框架,並作初步的分析之後,我卻又逐漸發現其如下的八大“暴力”特徵:
1、自帶嵌入式的Java編譯器,不再需要構建工具編譯、打包代碼;
2、自帶嵌入式的HTTP服務器,不再需要打包部署到Servlet容器;
3、自帶在嵌入式服務器中運行的測試框架,所有的測試類,必須以測試模式啓動服務器方式執行
4、嚴格按MVC組織應用代碼,各層組件類必須繼承基類,沒有“優雅”的接口實現,也不用依賴注入;
5、對渲染響應結果的跳轉控制,居然使用“異常”拋出機制 ;
6、控制器類的Action方法通通是靜態的,直接調用靜態方法即爲Action鏈重定向;
7、將模型類的字段聲明爲public,再通過框架編譯成私有字段和公共屬性訪問方法,訪問模型對象的屬性時也不使用get/set;
8、打破Java的封閉類定義,可以爲Java類庫中的類定義增強方法,並在響應模板中嵌入的增強對象上調用。
綜合起來,統稱爲Play框架的“暴力美學”比較合適。這樣一個矛盾的結合體,究竟會是怎樣一個框架?它又是如何做到的呢?我很疑惑,也很期待,希望能夠從框架的源碼入手,通過抽絲剝繭,層層解讀,找到答案。
Play框架的命名,正是爲了一反傳統JavaEE開發的臃腫,代表着一種輕鬆、玩樂、寫意的態度,因此爲不失其初衷,我想也給接下來的幾篇文章取一個輕鬆的名字,就叫Playing Play!系列吧,應該很合適。
liuu.iteye.com