可以從Play 文檔站點獲得本文所使用的教程和參考文檔。
本文的第一部分將介紹我們建議對每個框架執行的一組任務,然后繼續評估每個標準項。
在開發工作站中安裝框架
非常簡單,分三個步驟:
- 下載ZIP發行版
- 解壓縮
- 將解壓縮的文件夾添加到您的PATH中
而且很好!
使用免費的IDE,應用程序服務器和數據庫來設置開發環境
無所事事。 該框架提供了一個用于開發的內部應用程序服務器,您可以基于內存或基于文件系統的方式使用內部數據庫。
就IDE支持而言,您可以使用自己喜歡的文本編輯器或功能全面的Java IDE(例如Netbeans和Eclipse)。 由于Play會在您修改資源時即時重新加載所有資源,因此您實際上不需要任何高級的IDE集成。
但是,值得注意的是,該框架在內置操作,快捷方式,自動完成等方面為Eclipse和IntelliJ提供了擴展支持。因此,如果您已經熟悉它們,則可能要使用這兩者之一。
開發框架教程概述的“ Hello world”或類似示例
該框架的教程提出了待辦事項列表應用程序的開發。 從零開始到工作的“ hello world”狀態完全是微不足道的,而且速度非常快(幾分鐘)。 從此過渡到功能全面的應用程序,感覺自然且易于理解。
修改示例應用程序以通過自定義結構執行特定的數據庫查詢并顯示結果
Play 2.0使用EBean庫作為默認數據訪問層,非常易于使用和理解。 框架支持開箱即用的自定義SQL查詢,這沒有什么神秘之處,它類似于JPA本機查詢,并且不需要任何大的麻煩。
將依賴項添加到第三方庫并在我們的應用程序中使用它執行計算
Play 2.0既可以選擇直接將JAR文件添加到項目中(將其復制到/ lib項目文件夾中),也可以通過其內置的依賴項系統(通過SBT使用Apache Ivy)添加依賴項。
為了稍微介紹一下,我決定添加一個Maven中央回購引用并使用該庫。 事實證明,這很簡單,只需在Build.scala文件中添加一行,如果需要,您甚至可以在同一文件中添加自己的存儲庫。
附帶一提,您需要在更改此類內容后重建您的應用依賴關系,否則它將無法編譯。
開發“ Hello world” REST服務
發布JSON REST服務非常簡單, 文檔清晰明確。 唯一的抱怨是在此文檔頁面上沒有明確指出需要什么導入(我不得不花兩分寶貴的時間瀏覽API來找到它們:P)。
Play提供了您非常容易地編碼/解碼JSON和XML所需的所有工具,并且內置的路由機制使將所有HTTP方法映射到特定的控制器Java / Scala方法變得很簡單。
從我們的應用程序中消費我們自己的服務
Play提供了一個內置庫來使用Web服務。 JSON和XML響應的處理非常簡單。
調用是異步進行的,并通過Promises (類似于Java的Futures的結構)進行處理,這使它們在如何在應用程序流中處理它們方面非常強大。
另一方面,調用簡單的REST GET服務的代碼似乎比實際需要的更大或更復雜。 如果在API中提供了用于簡單(即阻止調用)用例的快捷方式,同時仍為需要/想要它的開發人員提供了完全的異步功能,我將不勝感激。
評價
好吧,讓我們通過審查! 這是我們根據上述各項進行的評估:
學習曲線:良好
如果您是Java開發人員(我想對Scala熟練的開發人員來說是相同的),那么開始玩Play真的非常簡單。 我花了不到一天的時間就熟悉了該框架,并且我所有的Java技能都像是仍然可用并賦予了我正在做的事情。
對于經常使用RoR,Django和類似框架的開發人員來說,也應該感到非常熟悉,因為項目的結構和命令行用法非常相似。
簡單任務的開發性能:良好
編寫常用的代碼很容易。 對于Java Web開發人員來說,更改文件并刷新瀏覽器以查看更改的功能似乎是一個奇跡。
復雜/單一任務的開發性能:良好
項目的結構以及與Maven的透明集成使包含第三方Java庫或添加完全自定義的構建類以執行特定的計算變得非常簡單。 簡而言之,您可以在Play項目中的任何Java框架中完成所有操作,在最壞的情況下,您只需編寫普通的舊Java代碼即可正常工作。
依賴管理:良好
Maven集成工作良好且易于使用,您可以將Play項目連接到現有的公司Maven存儲庫,并重新使用所有主要的Maven公共存儲庫。
代碼性能/安全性調整功能:MEDIUM
關于性能調優,在后端方面,您基本上可以做在任何其他基于Java的框架上可以做的所有事情。 無論是否使用內置的API,您都可以根據需要自定義和調整代碼。
在安全方面,我想不到編寫Servlet過濾器以通用方式管理注入和XSS的可能性,但是您可以輕松地開發自己的XSS和CSRF預防組件。
盡管該框架的版本2仍然缺乏針對常見攻擊的內置機制,但我認為應立即使用該機制。 開發人員似乎正在努力 。
平臺升級/冗余功能:BAD
它運行在JVM上,因此可以利用其所有公司功能。 但是目前(版本2.0.x)無法將Play 2應用作為WAR文件部署到常規應用服務器。
我認為這是一個大問題,因為在我的書中必須針對公司和/或任務關鍵型系統使用功能強大且經過驗證的應用服務器,并且內置播放服務器很好,但是我不會睡得太香在生產環境中部署了一個大型應用程序。
Play團隊正在努力解決WAR部署兼容性,并且該功能已標記為2.1版,因此不久就可以解決。
企業市場接受度:中
Java已穩定,被接受和證明,因此平臺本身幾乎總是沒有問題。 這里的大事與上一項相同,目前您無法在其他應用程序服務器中部署Play 2應用程序,并且大多數公司IT部門已經選擇了他們的應用程序服務器,而不是Play 2。
希望當2.1版出現時,此問題將消失。
開發和使用SOAP和REST服務的復雜性:良好
捆綁的WS API簡單明了,易于學習,并且可以完成工作。 對于簡單的場景,它可能會稍微簡單一些,但這并不重要。
TL; DR
Play框架2是每種基于Web的開發類型的絕佳選擇,特別是對于已經精通Java或Scala的開發人員。 它易于學習,使用起來輕而易舉,并充分利用了JVM的所有功能以及可用Java庫的龐大生態系統。
該項目的最新版本(v2.0)缺乏將應用程序打包為常規 Java WAR文件并將其部署到其他應用程序服務器的可能性。 這是一個很大的問題,特別是對于公司環境而言,因為大多數組織已經擁有穩定的應用服務器選擇。 Play小組正在努力為v2.1添加此功能,我們熱切期待。
在我的下一篇文章中,我將回顧Ruby on Rails,我知道這對任何人都不是新聞,但是我認為在所有選項上使用相同的評估過程將為您鋪平道路。
參考: Web開發框架–第2部分: 來自 Ricardo Zuasti博客 博客的 JCG合作伙伴 Ricardo Zuasti的 Play Framework 2.0 。
翻譯自: https://www.javacodegeeks.com/2012/07/web-development-frameworks-part-2-play.html