30天挑战的最后一天,我决定学习Play Framework.我本来想写Sacla,但是研究几个小时后,我发现没法在一天内公正评价Scala,下个月花些时间来了解并分享经验。本文我们先来看看Play框架基础,再开发个程序。
什么是Play框架?
Play是一个开源的现代web框架,用Java和Scala写可扩展的web程序。它能自动加载更新使得极大提高生产率。Play设计了无状态,非阻塞的架构,这使得用Play框架开发水平扩展web程序很容易。
我为什么关注Play?
我学习Play的原因:
- 高效: 我用Java已经8年了,但是几个月前我更多关注到Python和JavaScript(Node.js).最令我吃惊的是,使用动态语言开发程序是那么快。Java EE和Spring框架都不是快速原型开发的理想选择,但是用Play框架,有更新时,刷新页面,瞧!直接可以看到更新了。它支持所有Java代码,模板等的热加载,让你快速继续。
- 自然反应:Play框架基于Netty构建,所以它支持非阻塞I/O, 能简单经济的水平远程调用,这对于以服务为导向的架构高效工作很重要。
- 同时支持Java和Scala: Play框架是真正的通晓多语言的web框架,开发者在他们的项目中可以同时使用Java和Scala.
- 首个支持REST JSON类:Play让写RESTful程序变得很简单,很好的支持HTTP路由,HTTP路由将HTTP请求转换成具体动作,JSON marshalling/unmarshalling API在核心API中,所以不需要添加库来完成。
程序用例
本文,我们来开发一个网摘程序,允许用户发布和分享链接,你可以在OpenShift上看在线程序。这和我们之前第22天开发的程序一样,你可以参考之前的用例来更好了解。
安装Play
请参考文档了解怎样安装Play框架。
开发Play程序
介绍完基础,我们来开始写程序。
在你机器上运行以下命令。
$ play new getbookmarks _ _ __ | | __ _ _ _ | '_ \| |/ _' | || | | __/|_|\____|\__ / |_| |__/ play 2.2.1 built with Scala 2.10.2 (running Java 1.7.0_25), http://www.playframework.com The new application will be created in /Users/shekhargulati/dev/challenges/30days30technologies/day30/blog/getbookmarks What is the application name? [getbookmarks] > Which template do you want to use for this new application? 1 - Create a simple Scala application 2 - Create a simple Java application > 2 OK, application getbookmarks is created. Have fun!