成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Play Framework框架概述

開發 后端
有別于其他臃腫的企業級 Java 框架,簡潔的 Play 框架提供另外一種選擇,它關注于開發者的效率和 RESTful 風格的架構。Play 是 敏捷軟件開發的完美伴侶。

有別于其他臃腫的企業級Java框架,簡潔的Play框架提供另外一種選擇,它關注于開發者的效率和 RESTful 風格的架構。Play 是敏捷軟件開發的完美伴侶。

Play 框架的目標是讓基于 Java 的 web 應用開發變得更加容易,讓我們看一下它是怎么做到的。

想不想看看代碼?

閱讀 你可以使用 Play 做的5件很酷的事 ,或者直接從 Hello World 入門指南 開始 。


沒有痛苦的 Java 框架

Play 是一個純 Java 的框架,它讓你保持使用你喜歡的開發工具和類庫。如果你已經是一個使用 Java 平臺的開發者,

那么你不需要切換到另一種語言,其他 IDE 或者其他類庫, 而僅僅是切換到一個效率更高的 Java 環境!


修改 bug 后自動重新加載

Java 平臺因為較低的開發效率,已經是聲名狼藉了,主要的原因就是重復和繁瑣的“編譯-打包-部署”的周期。

這就是為什么我們重新對這種開發周期進行了思考,并且通過 Play 讓開發變得更有效率。

Play 框架自動編譯 Java 源代碼,然后直接熱加載到 JVM 中而不需要重啟服務器。你可以編輯代碼,框架自動重新加載,然后直接就看到修改后的結果,就像在 LAMP 或者 Rails 環境中一樣。

更有趣的是你可以根據自己的喜好,僅僅使用一個簡單的文本編輯器進行開發,而不需要使用功能齊備的 Java IDE。

當有錯誤發生時,框架會盡最大的努力,辨別并顯示出錯誤信息。

Play 甚至對 Java 堆棧跟蹤信息進行優化,以便幫助你更容易地解決問題。看看 Java 堆棧跟蹤是如何展示模板的執行過程的。


簡單的無狀態的 MVC 架構

想想,你在一端有一個數據庫,另一端是一個瀏覽器,為什么非要在兩者之間存在一個狀態呢?

基于有狀態和組件式的 Java Web 框架使我們很容易自動保存頁面狀態,但是這帶來了很多其他問題:如果用戶打開了第二個窗口時會發生什么?如果用戶單擊了瀏覽器的后退按鈕呢?

PHP,Ruby on Rails 和 Django 等許多 Web 應用框架促進了 無共享(Share Nothing) 架構的發展。隨著瀏覽器愈來愈強大,現在很容易使用 Ajax,或者離線存儲去解決客戶端的狀態問題。

我們不再需要為了在 web 上重建一個偽造的狀態而去 hack HTTP 模型。 無共享(Share Nothing) 的另一方面好處是,可以更加容易地并行地渲染頁面的各個部分,更容易地是實現頁面局部更新(漸進式增強)。


從 HTTP 到代碼的映射

如果你使用過另外一種 Java Web 框架,例如 Servlet API 或者 Struts 框架,那么你已經看到了一個把 HTTP 協議和 Java API 以及一些奇怪的概念關聯起來的抽象體系。Play 和它們想的不同,一個 Web 應用框架應該讓你可以完全地直接地訪問 HTTP 協議,這是 Play 和其他 Java Web 框架的一個根本性區別。

HTTP 協議,請求/響應模式,REST 架構風格, 內容類型(content-type)協商 ,統一資源標識符(URI) 都是 Play 框架涉及的主要概念。

例如,綁定一個 URI 模式到 Java 調用只需要這樣一行:

  1. GET    /clients/{id}        Clients.show 

如果 Ajax,REST 風格和在頁面之間維護前進/后退操作,是你在日常的 web 開發工作中需要面對的問題,那么請給 Play 一個機會吧。


高效的模板引擎

我們很喜歡 JSP 和 表達式語言背后的思想,但是為什么我們需要這么多的配置文件才能創建一個標簽庫呢?為什么我們不能完全地訪問對象模型呢? JSP 有很多的約束,這的確令人沮喪。這就是為什么我們創建了一個自定義的模板系統,靈感來自 JSP ,但是沒有它的那些約束。

你,還有其他人,應該已經疲倦了寫類似這樣的代碼:

  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>  
  3.    
  4. <c:choose>  
  5.     <c:when test="${emails.unread != null && fn:size(emails.unread)}">  
  6.         You have ${fn:size(emails.unread)} unread email(s)!  
  7.     </c:when>  
  8.     <c:otherwise>  
  9.         You have no unread emails!  
  10.     </c:otherwise>  
  11. </c:choose> 

我們認為,你一定更喜歡這樣寫:

  1. You have ${emails.unread ?: 'no'} ${emails.unread?.pluralize('email')} ! 

Play 模板引擎使用的表達式語言是 Groovy ,它的語法和 Java 一致。 Play 主要使用模板引擎來渲染 HTML 內容,不過你同樣可以使用它去生成其他內容,例如 email 郵件消息,JSON 等等。


JPA 持久化

Java 持久化接口( Java Persistence API )是一個簡潔的 Java 版的 ORM 框架,如果你使用過 JPA ,你會驚訝于它在 Play 框架中變得如此簡單。不需要任何配置,Play 會自動啟動 JPA 實體管理器,并在代碼發生修改時自動地同步。

而且如果你使用 Play 提供的 play.db.jpa.Model 作為超類時,它會幫助你把代碼寫得更漂亮。來看一下:

  1. public void messages(int page) {  
  2.     User connectedUser = User.find("byEmail", connected()).first();  
  3.     List<Message> messages = Message.find(  
  4.         "user = ? and read = false order by date desc",  
  5.         connectedUser  
  6.     ).from(page * 10).fetch(10);  
  7.     render(connectedUser, messages);  

 


測試驅動開發(如果你喜歡)

集成的測試可以讓你更容易的去進行測試驅動開發 (Test-Driven Development) ,你可以寫下各種類型的測試,從簡單的單元測試到完整的 acceptance 測試,然后直接在瀏覽器中使用 Selenium 運行測試。代碼覆蓋率也會被考量。


全棧的應用框架

Play 框架的最初靈感是來自于我們自己的 Java 應用。它包含了創建一個現代 Web 應用所需要的所有工具,包含:

  • 支持 JDBC 的關系數據庫
  • 基于 Hibernate ( JPA 接口 ) 的對象-關系映射框架( ORM )
  • 集成的緩存支持,易用的分布式緩存系統( memcached )
  • 簡單直接的提供 JSON 和 XML 的 Web Service 服務(我們說的是 真正 的 Web Services,而不是 SOAP 之類)
  • 支持使用 OpenID 進行分布式的身份認證
  • 可以將 Web 應用部署到任何地方(應用服務器,GAE ,云服務,等等)
  • 圖像處理 API

Play 模塊化的架構使你可以把你的 Web 應用和其他很多的模塊組合起來。多虧了應用模塊( application modules ),利用它你能夠以一種非常簡單的方式重用你的 Java 代碼,模板,靜態資源(如 JavaScript 和 CSS 文件)。 

原文鏈接:http://play-framework.herokuapp.com/zh/overview

【編輯推薦】

  1. Play Framework hotswap及源碼分析
  2. Play Framework總結性介紹
  3. Play Framework 2.0 RC1發布 Java Web框架
  4. Play Framework介紹:Hello World
  5. Play Framework介紹:主要概念

 

 

責任編輯:林師授 來源: Playframework中文小站
相關推薦

2012-02-23 13:48:16

JavaPlay Framew

2012-02-22 17:23:51

JavaPlay Framew

2011-09-09 17:01:42

框架

2012-03-14 09:29:00

Play framewJava

2012-02-24 09:53:24

JavaPlay Framew

2012-02-20 14:26:48

JavaPlay Framew

2012-02-20 14:20:44

JavaPlay Framew

2012-03-14 12:29:55

JavaPlay Framwo

2012-02-23 12:53:40

JavaPlay Framew

2012-02-22 16:06:42

2012-02-22 15:51:22

JavaPlay Framew

2012-02-23 11:06:18

JavaPlay FramewPlay!

2012-02-24 10:57:43

2012-02-24 11:31:09

JavaPlay Framew

2011-11-08 10:36:42

Java

2012-02-20 14:41:30

JavaPlay Framew

2023-08-24 10:08:06

2012-02-29 10:54:21

JavaPlay Framew

2012-02-23 13:59:28

Play FramewJava

2009-06-19 17:17:40

Spring框架Java
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久久久久免费看 | 久久久噜噜噜久久中文字幕色伊伊 | 国产精品亚洲一区二区三区在线 | 亚洲精品小视频在线观看 | 国产99久久久国产精品 | 久久久久久高清 | 久久久久国色av免费观看性色 | 欧美片网站免费 | 美女操网站 | 亚洲精品一二区 | 亚洲一区综合 | 激情av在线 | 一级毛片成人免费看a | 国产一区二区三区色淫影院 | 欧美成人猛片aaaaaaa | 一区二区在线不卡 | a视频在线| 97国产成人| 亚洲精品一区二区三区蜜桃久 | 国产日韩欧美一区二区在线播放 | 精品蜜桃一区二区三区 | 91在线一区二区 | 一级黄在线观看 | 伊人超碰在线 | 久久婷婷香蕉热狠狠综合 | 三级黄色大片网站 | 成人区精品 | 国产在线成人 | 看亚洲a级一级毛片 | 成人免费淫片aa视频免费 | av在线播放网 | 99视频网站| 国产人成精品一区二区三 | 亚洲iv一区二区三区 | 久久精品久久精品久久精品 | 国产在线一区二 | 久久久久久精 | 免费不卡一区 | 一区二区三区亚洲视频 | 久久噜| 一级黄色片免费在线观看 |