[Playframework⽂档中⽂翻译]Play框架概述
Play 框架概述
有别于其他臃肿的企业级 Java 框架,简洁的 Play 框架提供另外⼀种选择,它关注于开发者的效率和 RESTful 风格的架构。Play 是 敏捷软件开发 的完美伴侣。
Play 框架的⽬标是让基于 Java 的 web 应⽤开发变得更加容易,让我们看⼀下它是怎么做到的。
想不想看看代码?
阅读 ,或者直接从 开始 。
Play 是⼀个纯 Java 的框架,它让你保持使⽤你喜欢的开发⼯具和类库。如果你已经是⼀个使⽤ Java 平台的开发者,
那么你不需要切换到另⼀种语⾔,其他 IDE 或者其他类库, ⽽仅仅是切换到⼀个效率更⾼的 Java 环境!
Java 平台因为较低的开发效率,已经是声名狼藉了,主要的原因就是重复和繁琐的“编译-打包-部署”的周期。
这就是为什么我们重新对这种开发周期进⾏了思考,并且通过 Play 让开发变得更有效率。
Play 框架⾃动编译 Java 源代码,然后直接热加载到 JVM 中⽽不需要重启服务器。你可以编辑代码,框架⾃动重新加载,然后直接就看到修改后的结果,就像在 LAMP 或者 Rails 环境中⼀样。
更有趣的是你可以根据⾃⼰的喜好,仅仅使⽤⼀个简单的⽂本编辑器进⾏开发,⽽不需要使⽤功能齐备的 Java IDE。
当有错误发⽣时,框架会尽最⼤的努⼒,辨别并显⽰出错误信息。
Play 甚⾄对 Java 堆栈跟踪信息进⾏优化,以便帮助你更容易地解决问题。看看 Java 堆栈跟踪是如何展⽰模板的执⾏过程的。
简单的⽆状态的 MVC 架构
想想,你在⼀端有⼀个数据库,另⼀端是⼀个浏览器,为什么⾮要在两者之间存在⼀个状态呢?
基于有状态和组件式的 Java Web 框架使我们很容易⾃动保存页⾯状态,但是这带来了很多其他问题:如果⽤户打开了第⼆个窗⼝时会发⽣什么?如果⽤户单击了浏览器的后退按钮呢?
PHP,Ruby on Rails 和 Django 等许多 Web 应⽤框架促进了 架构的发展。随着浏览器愈来愈强⼤,现在很容易使⽤ Ajax,或者离线存储去解决客户端的状态问题。
我们不再需要为了在 web 上重建⼀个伪造的状态⽽去 hack HTTP 模型。 的另⼀⽅⾯好处是,可以更加容易地并⾏地渲染页⾯的各个部分,更容易地是实现页⾯局部更新(渐进式增强)。
如 果你使⽤过另外⼀种 Java Web 框架,例如 Servlet API 或者 Struts 框架,那么你已经看到了⼀个把 HTTP 协议和 Java API 以及⼀些奇怪的概念关联起来的抽象体系。Play 和它们想的不同,⼀个 Web 应⽤框架应该让你可以完全地直接地访问 HTTP 协议,这是 Play 和其他 Java Web 框架的⼀个根本性区别。
HTTP 协议,请求/响应模式,REST 架构风格, ,统⼀资源标识符(URI) 都是 Play 框架涉及的主要概念。
例如,绑定⼀个 URI 模式到 Java 调⽤只需要这样⼀⾏:
GET /clients/{id} Clients.show
如果 Ajax,REST 风格和在页⾯之间维护前进/后退操作,是你在⽇常的 web 开发⼯作中需要⾯对的问题,那么请给 Play ⼀个机会吧。
我 们很喜欢 JSP 和 表达式语⾔背后的思想,但是为什么我们需要这么多的配置⽂件才能创建⼀个标签库呢?为什么我们不能完全地访问对象模型呢? JSP 有很多的约束,这的确令⼈沮丧。这就是为什
么我们创建了⼀个⾃定义的模板系统,灵感来⾃ JSP ,但是没有它的那些约束。
你,还有其他⼈,应该已经疲倦了写类似这样的代码:
<%@ taglib uri="java.sun/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="java.sun/jsp/jstl/functions" prefix="fn" %>
<c:choose>
<c:when test="${emails.unread != null && fn:size(emails.unread)}">
You have ${fn:size(emails.unread)} unread email(s)!
</c:when>
<c:otherwise>
You have no unread emails!
</c:otherwise>
</c:choose>
我们认为,你⼀定更喜欢这样写:
You have ${emails.unread ?: 'no'} ${emails.unread?.pluralize('email')} !
Play 模板引擎使⽤的表达式语⾔是 ,它的语法和 Java ⼀致。 Play 主要使⽤模板引擎来渲染 HTML 内容,不过你同样可以使⽤它去⽣成其他内容,例如 email 邮件消息,JSON 等等。
JPA 持久化
Java 持久化接⼝( Java Persistence API )是⼀个简洁的 Java 版的 ORM 框架,如果你使⽤过 JPA ,你会惊讶于它在 Play 框架中变得如此简单。不需要任何配置,Play 会⾃动启动 JPA 实体管理器,并在代码发⽣修改时⾃动地同步。
⽽且如果你使⽤ Play 提供的 play.db.jpa.Model 作为超类时,它会帮助你把代码写得更漂亮。来看⼀下:
public void messages(int page) {
User connectedUser = User.find("byEmail", connected()).first();
List<Message> messages = Message.find(
"user = ? and read = false order by date desc",
connectedUser
).from(page * 10).fetch(10);
render(connectedUser, messages);
}
测试驱动开发(如果你喜欢)
集成的测试可以让你更容易的去进⾏测试驱动开发 (Test-Driven Development) ,你可以写下各种类型的测试,从简单的单元测试到完整的 acceptance 测试,然后直接在浏览器中使⽤ 运⾏测试。代码覆盖率也会被考量。
php文件管理系统mvc 源码Play 框架的最初灵感是来⾃于我们⾃⼰的 Java 应⽤。它包含了创建⼀个现代 Web 应⽤所需要的所有⼯具,包含:
⽀持 JDBC 的关系数据库
基于 Hibernate ( JPA 接⼝ ) 的对象-关系映射框架( ORM )
集成的缓存⽀持,易⽤的分布式缓存系统( memcached )
简单直接的提供 JSON 和 XML 的 Web Service 服务(我们说的是 真正 的 Web Services,⽽不是 SOAP 之类)
⽀持使⽤ OpenID 进⾏分布式的⾝份认证
可以将 Web 应⽤部署到任何地⽅(应⽤服务器,GAE ,云服务,等等)
图像处理 API
Play 模块化的架构使你可以把你的 Web 应⽤和其他很多的模块组合起来。多亏了应⽤模块( ),利⽤它你能够以⼀种⾮常简单的⽅式重⽤你的 Java 代码,模板,静态资源(如 JavaScript 和 CSS ⽂件)。
尝试⼀下吧
,然后开始开发你的第⼀个应⽤吧。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论