Play!是一个纯Java实现的Web敏捷开发框架,工程的默认目录结构如下:
构建在HTTP上
Servlet或者Struts之类的Java Web框架对HTTP API进行了抽象和封装,Play!和这些框架的根本上的不同之处就在于Play!提供了对HTTP完全的访问能力。
通过Router绑定URI到Java的方法:
高效的模板引擎
我们喜欢JSP和表达式语言背后的思想,但为什么创建一个taglib需要配置这么多的文件,为什么不能提供对model的完全的访问?JSP有太多的局限性,使用起来很麻烦,那么让我们创建一个更好的模板引擎吧。
如果你想实现下面的JSP代码的功能:
<% @ taglib uri = " http://java.sun.com/jsp/jstl/functions " prefix = " fn " %>
< c:choose >
< c:when test ="${emails.unread != null && fn:size(emails.unread)}" >
You've ${fn:size(emails.unread)} unread emails !
</ c:when >
< c:otherwise >
You've none unread emails !
</ c:otherwise >
</ c:choose >
你会喜欢上下面这种写法:
Play!使用groovy作为模板语言,这是一种和Java语法极为相似的语言,并且可以无缝的使用Java类库,可以将其看作是动态的Java语言。
具有生产效率的Java
众所周知,由于需要编译、部署,Java平台的生产效率比ROR这类动态语言平台低很多。Play!的目标是尽可能的提高Java开发的生产效率。在开发环境下,Play!框架可自动编译和重新装载已改变的源文件。也就是说在保存源代码的改变后,就能立刻通过刷新浏览器看到结果,不需要重新编译、部署、重启服务器。
Play! 具有优秀的错误报告功能。发生异常时,该框架会直接显示出错误的源代码,甚至是模板代码。
Full-stack应用框架
Play!是一个full-stack Java Web应用框架,具有建立一个现代化网络应用所需的一切:
- 通过JBDC支持关系型数据库
- 使用Hibernate作为ORM
- 支持Memcache
- 支持JSON或者XML格式的Web服务
- 支持OpenID
- 图片处理 API
- …
Play!的插件系统可以让你重用其他系统的Java代码、模板甚至JavaScript和CSS。


