Java Web的拯救者-PlayFramework

Java Web的拯救者-PlayFramework

即使有了SSH框架,Java Web开发依然不是人干的活:

密密麻麻的配置文档

配置个IDE还需要Google半天,如果用百度还能可能被坑

跑通个框架对于新手完全靠运气

重启,重启,重启....[doge]

终于有个法国大神写了一个PlayFramework框架出来解救各位Java码农。传说有了它,放个猴子在电脑面前都会编程了!

首先说明一下,这里所说的PlayFramework的版本是1.2.7,因为这个版本才是过来拯救Java程序员的,PlayFramework 2是去捣乱Scala世界的。

PlayFramework的优点:

  • 实时编译,不需重启,写好代码,直接刷新浏览器就能看到结果!
  • 完善的应用框架,从表现层到持久层完整的支持,忘记SSH吧!
  • 约定优于配置,而且就一个配置文件!
  • 简洁的HTTP数据绑定!
  • 内置强大的工具类库,简化一切繁琐的传统问题:JSON、XML、WebService、安全认证、定时任务、缓存、邮件、AJAX……
  • 支持模块,模块学习成本超级低!
  • 简单的HTTP无状态架构,是HTTP服务器集群不用再折腾Session了,同时百万用户在线不再是梦想!
  • 友好的出错提示
  • 和IDE完美整合:Eclipse、Intellj IDEA、NetBeans...

还不够?!那就自己安装一个慢慢体会吧!

下面再来几个片段,展示一下Play的哲学理念:

HTTP数据绑定

在Play里面获取HTTP参数是一件非常简单的事情,只需要将函数参数名称和HTTP参数名称保持一致即可,参数类型会自动转换的。


//请求 http://feichao.org/users/list?age=0&name=feichao

public static void list(Integer age, String name){
  User userList = User.find("age = ? and name = ?", age, name).fetch();
  render(userList);
}

如果你需要传输自定义的对象,如


public class User {  
    public String name;  
    public Integer age;  
}

则保存该对象的方法,只用这样写


//请求 http://feichao.org/users/add?u.age=0&u.name=feichao

public static void add(User u) {  
    u.save();  
}

Play的跳转功能

在其他框架里面要做跳转操作时,最起码也需要调用一些函数来实现跳转功能,这样的写法不仅不利于阅读,而且还无法充分利用IDE的重构功能。而Play提供了一种更加优雅的写法:


public static void show(Long id) {  
    Article article = Article.findById(id);  
    render(article);  
}  

public static void edit(Long id, String title) {  
    Article article = Article.findById(id);  
    article.title = title;  
    article.save();  
    show(id); //直接调用show这个函数,框架会自动转换为浏览器的302跳转,酷吧?
} 

向模版传参数

在很多框架里面,向模版传递的参数通常要放在一个Map里面传递。如


Article article = Article.findById(id);  
User user = User.getConnected();  
Map<String, Object> data = new HashMap<String,Object>();  
data.put("article", article);  
data.put("user", user);  
render(data); 

但这样的做法在Play眼里实在是傻大粗啊!于是非常优雅的写法诞生了:


Article article = Article.findById(id);  
User user = User.getConnected();  
render(user, article); 

直接将参数传入模版,然后在模版直接获取:


<h1>${article.title}</h1>
<span>${user.name}</span>

看似平淡的代码,其实Play在里面下了大苦工,以后的文章会讲述这门技术。

我的基于 PlayFramework 1.2.x 的几个项目已经全部投入正式运营

该框架相比其他框架,开发和运维都要简单,而且那么久也没发现什么问题

这个框架的性能不算顶尖,考虑到集成了如此多的功能,这种表现属于良好

如果你的项目不大,需要快速开发,Play绝对是个好选择。

本人长期使用该框架,并参与到其模块开发,有问题欢迎提问。

PlayFramework的官网有更加详细的介绍: 查看官方文档