Playframework 1.4.x 与Playframework 2.5.x 选型比较
Playframework 2.5.x
优势:
- 文档齐全,持续更新;
 - 支持更多最新的技术,更清晰的底层技术;
 - 完全异步的HTTP编程模型;
 - 通过 Comet, long-polling and WebSockets 给客户端提供持续的连接;
 - 通过 Akka 的 Actor 模型提供响应高并发的系统;
 - 使用 Akka Streams
- Filters
 - Streaming response bodies
 - Request body parsers
 - WebSockets
 - Streaming WS client responses
 
 - 使用 Websocket
 - 使用 Ebean 或 JPA 和 Anorm(用于Scala)作为数据层,Java 建议用 Ebean,
- Ebean 可以很容易跟 ElasticSearch 结合做全文检索相关功能。
 - Ebean 服务端分页极为容易。
 
 - 使用 Comet sockets
 - 使用更强大的 The Twirl template engine,即 Scala 的界面模板,
- 模板是要编译的,编译前更早报错,报错更准确。
 - 语法简洁,只有一个“@”特殊字符,借助强大的 Scala 语言功能更强大。
 - 函数式编程的语法和表达式非常适合模板引擎。
 
 - 路由系统 routing system 也是编译的,帮助提早发现错误。
 - 强大而易用的自动化测试系统。
 - 采用 sbt 作为集成编译工具,可以很好地与 Maven 等传统工具结合,这样也就可以很好地和已有系统集成。
 - 有很多的实际示例代码和模组 Module 可用,如下:
 - 很多方面都有针对性的优雅解决方案,如:
- CSRF
 - JSON 转换 Play 2 使用的是 Jackson 而不是 google 的那个 gson。
 - Database Evolutions
 - Deploy 部署 dist 命令很强大,直接打个zip包,解压后,运行 bin 目录下的 run 命令就可以启动服务了。甚至可以打成各个系统 Native 的安装包,如 *.msi (Windows), *.apk (macOS), *.rpm (Linux) 等
 
 
劣势:
- 深入的功能,特别是 Akka 有一定的学习曲线。
 - Java 和 Scala 有界线,有两套API,不能自然转换,未来要用 Scala 则可能需要重写。
 
Playframework 1.4.x
优势:
- 有之前的项目经验,熟悉度高;
 - 满足基本的项目需求,实现一般的(传统的)信息系统没有问题;
 - 可用之前的项目快速起步,包括与 Swagger 等的结合,部署脚本文件等。
 
劣势:
- 动态语言的 Groovy 界面模板,非编译型语言,仅在运行时才能知道错误,不易排查错误原因,解释型运行效率低。
 - 太多黑科技,“不正规”地使用“正规”的 Java 技术,可能导致一些很难解决的Bug,包括与第三方 jar 包的兼容问题等。
 - 项目采用 python 做为编译等工作的工具,不易自定义和集成已有系统。