前言
之前在《程序员》杂志上看到过一篇文章介绍Play Framework,厌倦了Struts2-Spring的开发模式后打算自学这个开发框架。于是wiki了下Play Framework ,并简单翻译了下wiki上的内容。
Play 是一个开源的Web应用框架,使用Java语言编写,并遵循了MVC模式。旨在通过约定大于配置,热部署,浏览器提示错误等方式提高开发者的生产率。
Java编写,在1.1版本也支持了Scala 语言。
动机
Play 深受Ruby on Rails (这个就不用介绍了吧)与Django(没听过,惭愧)启发。如果你熟悉以上任一框架很轻易就可以上手。Play 充分利用了Java的强大能力来构建一个有别于Java EE的web开发环境。脱离了Java EE的束缚,Play 为开发者提供了一个更容易的开发环境并优雅地提升生产率。
主要区别
与其他Java开发框架:
- Play 是完全RESTful的 - 每次连接没有Java EE的session。这使 Play 比其他框架更具可伸缩性(?什么意思)。
- 没有配置:下载,解压缩,开发-就是这么简单。
- 轻松调试:无需部署应用服务器,只需编辑代码刷新页面。
- 整合单元测试:单元测试是Play 的核心组件。
- 优雅的API:开发者很少会需要引入第三方类库-Play 内植了常见的轮子。
- CRUD模块:用很少的代码构建后台UI。
- Play 是一个Web框架:它是与语言无关的,目前支持Java和Scala。
- 模块化架构:Play ,与ROR,Django一样遵循模块化的概念,提供优雅简单的方式扩展核心部分。
- 从代码的角度看最让人吃惊的是静态方法横贯整个API:这一点与其他Java框架难得一见。
组件
Play 使用了以下热门的Java类库
- JBoss Netty 作为服务器
- Hibernate 作为数据层
- Groovy 作为模板引擎
- Eclipse 编译器也支持热部署
当前核心部分具有以下功能:
- 干净的RESTful框架
- CRUD:提供简单操作模型对象的模块
- 安全:提供一个用户认证的模块
- 基于注解的验证框架
- 有一个计划任务调度
- 有一个使用SMTP协议的邮件收发
- 支持JSON和XML的解析和封装
- 基于JPA规范的持久层
- 为快速部署测试提供一个内嵌数据库
- 框架内置单元测试
- 文件自动上传功能
- 多环境配置的思想
- 基于Groovy的强大模板引擎,支持继承与标签
- 模块化架构,更轻易为核心部分增加特性
- OpenId (?),web services客户端