自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Play Framework框架概述

開(kāi)發(fā) 后端
有別于其他臃腫的企業(yè)級(jí) Java 框架,簡(jiǎn)潔的 Play 框架提供另外一種選擇,它關(guān)注于開(kāi)發(fā)者的效率和 RESTful 風(fēng)格的架構(gòu)。Play 是 敏捷軟件開(kāi)發(fā)的完美伴侶。

有別于其他臃腫的企業(yè)級(jí)Java框架,簡(jiǎn)潔的Play框架提供另外一種選擇,它關(guān)注于開(kāi)發(fā)者的效率和 RESTful 風(fēng)格的架構(gòu)。Play 是敏捷軟件開(kāi)發(fā)的完美伴侶。

Play 框架的目標(biāo)是讓基于 Java 的 web 應(yīng)用開(kāi)發(fā)變得更加容易,讓我們看一下它是怎么做到的。

想不想看看代碼?

閱讀 你可以使用 Play 做的5件很酷的事 ,或者直接從 Hello World 入門(mén)指南 開(kāi)始 。


沒(méi)有痛苦的 Java 框架

Play 是一個(gè)純 Java 的框架,它讓你保持使用你喜歡的開(kāi)發(fā)工具和類(lèi)庫(kù)。如果你已經(jīng)是一個(gè)使用 Java 平臺(tái)的開(kāi)發(fā)者,

那么你不需要切換到另一種語(yǔ)言,其他 IDE 或者其他類(lèi)庫(kù), 而僅僅是切換到一個(gè)效率更高的 Java 環(huán)境!


修改 bug 后自動(dòng)重新加載

Java 平臺(tái)因?yàn)檩^低的開(kāi)發(fā)效率,已經(jīng)是聲名狼藉了,主要的原因就是重復(fù)和繁瑣的“編譯-打包-部署”的周期。

這就是為什么我們重新對(duì)這種開(kāi)發(fā)周期進(jìn)行了思考,并且通過(guò) Play 讓開(kāi)發(fā)變得更有效率。

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

更有趣的是你可以根據(jù)自己的喜好,僅僅使用一個(gè)簡(jiǎn)單的文本編輯器進(jìn)行開(kāi)發(fā),而不需要使用功能齊備的 Java IDE。

當(dāng)有錯(cuò)誤發(fā)生時(shí),框架會(huì)盡最大的努力,辨別并顯示出錯(cuò)誤信息。

Play 甚至對(duì) Java 堆棧跟蹤信息進(jìn)行優(yōu)化,以便幫助你更容易地解決問(wèn)題。看看 Java 堆棧跟蹤是如何展示模板的執(zhí)行過(guò)程的。


簡(jiǎn)單的無(wú)狀態(tài)的 MVC 架構(gòu)

想想,你在一端有一個(gè)數(shù)據(jù)庫(kù),另一端是一個(gè)瀏覽器,為什么非要在兩者之間存在一個(gè)狀態(tài)呢?

基于有狀態(tài)和組件式的 Java Web 框架使我們很容易自動(dòng)保存頁(yè)面狀態(tài),但是這帶來(lái)了很多其他問(wèn)題:如果用戶打開(kāi)了第二個(gè)窗口時(shí)會(huì)發(fā)生什么?如果用戶單擊了瀏覽器的后退按鈕呢?

PHP,Ruby on Rails 和 Django 等許多 Web 應(yīng)用框架促進(jìn)了 無(wú)共享(Share Nothing) 架構(gòu)的發(fā)展。隨著瀏覽器愈來(lái)愈強(qiáng)大,現(xiàn)在很容易使用 Ajax,或者離線存儲(chǔ)去解決客戶端的狀態(tài)問(wèn)題。

我們不再需要為了在 web 上重建一個(gè)偽造的狀態(tài)而去 hack HTTP 模型。 無(wú)共享(Share Nothing) 的另一方面好處是,可以更加容易地并行地渲染頁(yè)面的各個(gè)部分,更容易地是實(shí)現(xiàn)頁(yè)面局部更新(漸進(jìn)式增強(qiáng))。


從 HTTP 到代碼的映射

如果你使用過(guò)另外一種 Java Web 框架,例如 Servlet API 或者 Struts 框架,那么你已經(jīng)看到了一個(gè)把 HTTP 協(xié)議和 Java API 以及一些奇怪的概念關(guān)聯(lián)起來(lái)的抽象體系。Play 和它們想的不同,一個(gè) Web 應(yīng)用框架應(yīng)該讓你可以完全地直接地訪問(wèn) HTTP 協(xié)議,這是 Play 和其他 Java Web 框架的一個(gè)根本性區(qū)別。

HTTP 協(xié)議,請(qǐng)求/響應(yīng)模式,REST 架構(gòu)風(fēng)格, 內(nèi)容類(lèi)型(content-type)協(xié)商 ,統(tǒng)一資源標(biāo)識(shí)符(URI) 都是 Play 框架涉及的主要概念。

例如,綁定一個(gè) URI 模式到 Java 調(diào)用只需要這樣一行:

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

如果 Ajax,REST 風(fēng)格和在頁(yè)面之間維護(hù)前進(jìn)/后退操作,是你在日常的 web 開(kāi)發(fā)工作中需要面對(duì)的問(wèn)題,那么請(qǐng)給 Play 一個(gè)機(jī)會(huì)吧。


高效的模板引擎

我們很喜歡 JSP 和 表達(dá)式語(yǔ)言背后的思想,但是為什么我們需要這么多的配置文件才能創(chuàng)建一個(gè)標(biāo)簽庫(kù)呢?為什么我們不能完全地訪問(wèn)對(duì)象模型呢? JSP 有很多的約束,這的確令人沮喪。這就是為什么我們創(chuàng)建了一個(gè)自定義的模板系統(tǒng),靈感來(lái)自 JSP ,但是沒(méi)有它的那些約束。

你,還有其他人,應(yīng)該已經(jīng)疲倦了寫(xiě)類(lèi)似這樣的代碼:

  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> 

我們認(rèn)為,你一定更喜歡這樣寫(xiě):

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

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


JPA 持久化

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

而且如果你使用 Play 提供的 play.db.jpa.Model 作為超類(lèi)時(shí),它會(huì)幫助你把代碼寫(xiě)得更漂亮。來(lái)看一下:

  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);  

 


測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(如果你喜歡)

集成的測(cè)試可以讓你更容易的去進(jìn)行測(cè)試驅(qū)動(dòng)開(kāi)發(fā) (Test-Driven Development) ,你可以寫(xiě)下各種類(lèi)型的測(cè)試,從簡(jiǎn)單的單元測(cè)試到完整的 acceptance 測(cè)試,然后直接在瀏覽器中使用 Selenium 運(yùn)行測(cè)試。代碼覆蓋率也會(huì)被考量。


全棧的應(yīng)用框架

Play 框架的最初靈感是來(lái)自于我們自己的 Java 應(yīng)用。它包含了創(chuàng)建一個(gè)現(xiàn)代 Web 應(yīng)用所需要的所有工具,包含:

  • 支持 JDBC 的關(guān)系數(shù)據(jù)庫(kù)
  • 基于 Hibernate ( JPA 接口 ) 的對(duì)象-關(guān)系映射框架( ORM )
  • 集成的緩存支持,易用的分布式緩存系統(tǒng)( memcached )
  • 簡(jiǎn)單直接的提供 JSON 和 XML 的 Web Service 服務(wù)(我們說(shuō)的是 真正 的 Web Services,而不是 SOAP 之類(lèi))
  • 支持使用 OpenID 進(jìn)行分布式的身份認(rèn)證
  • 可以將 Web 應(yīng)用部署到任何地方(應(yīng)用服務(wù)器,GAE ,云服務(wù),等等)
  • 圖像處理 API

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

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

【編輯推薦】

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

 

 

責(zé)任編輯:林師授 來(lái)源: Playframework中文小站
相關(guān)推薦

2012-02-23 13:48:16

JavaPlay Framew

2012-02-22 17:23:51

JavaPlay Framew

2011-09-09 17:01:42

框架

2012-02-20 14:26:48

JavaPlay Framew

2012-02-24 09:53:24

JavaPlay Framew

2012-03-14 09:29:00

Play framewJava

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

2012-02-20 14:41:30

JavaPlay Framew

2011-11-08 10:36:42

Java

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
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)