由于Java語言的局限性,實現一個Rails-like的Java開發框架一直是一個難題。在Java上想體驗Rails-like的開發模式,只能選擇Grails或者JRuby on Rails。然而這兩種框架都是動態語言實現的框架,只是基于JVM而不是基于Java語言本身。動態語言確實有很多優點,但往往難以調試。是否有一個Java語言實現的Rails-like框架?答案是Play!
Play!是一個full-stack Java Web應用框架,包括一個簡單無狀態的MVC模型,Hibernate的持久性對象,基于Groovy的模板引擎,以及建立一個現代化網絡應用所需的一切。注意,這里雖然使用了Groovy,但只是是作為頁面模板語言,這和freemaker、velocity使用自己定義的語言是同樣的道理,Groovy的成熟以及它和Java的相似性決定了采用Groovy遠遠好于自己定義一個語言。
Play!的主要特性:
- 簡單的開發周期。該框架可自動編譯和重新裝載已改變的源文件。也就是說在保存源代碼的改變后,就能立刻從瀏覽器中看到結果,不需要重新編譯、部署、重啟服務器。
- 約定優于配置。
- 智能綁定HTTP參數到Java方法參數。
- 無狀態的模型,無共享架構(Share-Nothing Architecture),為REST做好了準備(未來的目標是RESTful架構),具有很好的伸縮性。
- 一個基于Groovy的強大的模板引擎,可實現多層繼承,定制用戶標簽等功能。
- 包含了很多開發Web應用需要的功能整合,如Memcached、OpenID、插件系統等。
- 優秀的錯誤報告功能:發生異常時,該框架會直接顯示出錯誤的源代碼,甚至是模板代碼。
- 純Java,能夠使用任何Java類庫,能夠很好的生成eclipse和netbeans項目文件。
- 速度很快。
初步看了下文檔,應該是目前最接近Rails的Java framework,整個框架和我最近設想的一個框架差不多,很多簡化 Java Web開發會遇到的問題,play!都給出了一個盡可能的解決方法,比如HTTP參數綁定、屬性get/set等等,局限于java語言本身,目前也只能這樣了。play!目前還沒有集成驗證功能,也沒有一些諸如HTML encode的工具庫,和spring的集成也好像還在開發中,不過這些都應該很容易解決。
該項目是開源的,您可以在
http://www.playframework.org上查看更多!
歡迎訪問我的blog: http://www.eoss.cn/blog/