没有痛苦的 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 调用只需要这样一行:
- GET /clients/{id} Clients.show
如果 Ajax,REST 风格和在页面之间维护前进/后退操作,是你在日常的 web 开发工作中需要面对的问题,那么请给 Play 一个机会吧。
高效的模板引擎
我们很喜欢 JSP 和 表达式语言背后的思想,但是为什么我们需要这么多的配置文件才能创建一个标签库呢?为什么我们不能完全地访问对象模型呢? JSP 有很多的约束,这的确令人沮丧。这就是为什么我们创建了一个自定义的模板系统,灵感来自 JSP ,但是没有它的那些约束。
你,还有其他人,应该已经疲倦了写类似这样的代码:
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-
<%@ taglib uri="http://java.sun.com/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 模板引擎使用的表达式语言是 Groovy ,它的语法和 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 测试,然后直接在浏览器中使用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
分享到:
相关推荐
在“Playframework框架学习之路 1”中,我们可能要探讨这个框架的基础概念、安装过程以及如何创建一个简单的应用。下面将详细介绍Play Framework的关键知识点。 1. **快速开发**: Play Framework以其快速开发能力而...
本教程旨在为初学者和有经验的开发者提供全面的指导,帮助他们掌握Play Framework2的核心概念和实践技巧。 在Play Framework2中,你将学习到以下关键知识点: 1. **MVC架构**:Play遵循模型-视图-控制器(MVC)...
本书(《Play Framework Cookbook》)提供了超过 60 个实用的示例来帮助开发者深入理解 Play Framework 的高级概念,并有效地运用到实际项目中。 - **适用场景**:适合那些希望构建响应速度快、可扩展性强且易于维护...
本篇文章将引导你通过创建一个简单的待办事项(Todo List)应用来了解Play Framework 2.0的基本概念和操作流程。 一、环境准备 在开始之前,确保你的系统已安装Java Development Kit (JDK) 和 sbt (Scala Build ...
《Play Framework 框架手册》是一份深入介绍Play框架的文档,主要涵盖了从基础概念到高级特性的全面内容,适合初学者和经验丰富的开发者参考。以下是对手册中部分核心知识点的详细阐述: 1. **MVC应用程序模型**:...
- **结构安排**:全书包含了超过 60 个实用且高效的示例,这些示例涵盖了 Play Framework 的核心概念以及高级特性。 - **主题范围**: - **基础篇**:介绍 Play Framework 的安装、配置及基本用法。 - **进阶篇*...
然后,《playframework_api.rar》则是Play Framework的最新API文档。API文档是开发者日常工作中不可或缺的参考资料,它详尽地列出了框架的所有类、接口、方法,方便开发者查找和使用。 最后,是《play——demo.rar...
在这里,我们将深入探讨Play Framework的核心概念和关键组件,以及如何通过源代码实现这个留言板功能。 首先,Play Framework采用模型-视图-控制器(MVC)架构模式,这使得代码组织清晰,易于维护。在`todolist`...
#### Play框架的核心概念 - **路由(Routing)**:通过路由表把请求映射到相应的控制器方法。 - **控制器(Controllers)**:处理请求并返回响应,负责业务逻辑的实现。 - **模板引擎(Templating)**:利用Scala或...
1. **模型-视图-控制器(MVC)架构**:Play Framework 遵循 MVC 设计模式,将应用程序分为模型、视图和控制器三个部分。这种结构有助于保持代码的清晰度和可维护性。 - **模型**:负责存储和管理数据。 - **视图**...
1. **MVC架构**:Play Framework 基于MVC设计模式,使得开发者可以清晰地分离业务逻辑、数据模型和用户界面。模型层处理数据和业务逻辑,视图层负责展示,而控制器处理用户请求并协调模型和视图。 2. **异步编程**...
### Playframework Cookbook 知识点...总之,《Playframework Cookbook》是一本全面介绍 Play Framework 使用方法和技术细节的专业书籍,对于希望深入了解并熟练掌握 Play Framework 的开发者来说,是一份宝贵的资源。
### Playframework Cookbook 知识点解析 #### 一、Play Framework 概览 - **框架定位**:Play Framework 是一个轻量级、高效的 Java 和 Scala Web 开发框架,旨在简化 Web 应用程序的开发过程。 - **核心特性**: ...
本文将深入探讨Play Framework的基本概念、常用命令、Eclipse调试方法、模式、控制器、工具包、session管理和模板引擎等方面。 1. **常用命令** - `play new <项目名>`:创建一个新的Play项目。 - `play run ...
- `playframework-2.9.1`目录下包含了框架的源代码,开发者可以深入理解其内部工作原理,学习如何定制和扩展框架功能。 - 通过阅读源码,开发者可以学习到如何编写符合Play风格的Controller、Model、View以及如何...
通过以上介绍,可以看出 Play! Framework 2 不仅是一个强大的 web 开发框架,而且非常适合希望快速开发高质量 web 应用的开发者。无论是新手还是有经验的开发者都能从中受益,快速实现自己的创意。
PlayFramework是一个广受欢迎的开源Java Web开发框架,它以其简洁、高效的特性深受开发者喜爱。该框架采用模型-视图-控制器(MVC)架构模式,旨在简化Web应用程序的开发过程,提高开发效率,并且支持敏捷开发。在...
1. **入门与环境配置**:介绍如何设置开发环境,包括安装Scala、 sbt(Scala构建工具)以及配置Play框架。这部分还会讲解如何创建第一个“Hello, World!”应用,让读者快速上手。 2. **路由与控制器**:详细解析...