Playing Play!系列之一:Play框架的暴力美學

     

     作爲Java領域最Railsful的框架,Play有如一股清新之風,以不破不立之勢,一掃以往JavaEE開發臃腫龐雜之惑,迅速建立起了獨特的簡單之美。Play框架架構於標準的Java體系之上,開發起來卻與Rails框架非常神似;其框架本身的核心代碼只有不到27千行(含註釋),可謂小巧精緻,非常極簡主義,卻包含了從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!系列吧,應該很合適。

 

      [email protected]

      liuu.iteye.com

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