Play Framework 1.0和2.0之间的主要区别是什么?

时间:2011-11-18 22:22:05

标签: playframework playframework-2.0

随着最近发布的Play Framework 2.0,我想知道是否有人可以从高层次的角度总结Play Framework 1& 2。

我已编译了一些(播放1.0 - >播放2.0):

  • 模板引擎:Groovy Pages - > Scala模板
  • 持久性:休眠 - > Ebean
  • 语言支持:Java - > Scala,Java
  • 动态编译:字节码注入 - >通过SBT进行动态编译
  • 构建系统:n / a - > SBT
  • 可扩展性:模块,插件 - >子项目,插件,SBT插件

还有什么?阿卡?

6 个答案:

答案 0 :(得分:44)

这是我的清单,当然还有一些重复

  • 打破向后兼容性(从头开始重写)

  • 在scala vs java中编写的核心(学习scala以进行协作)

  • 模板的scala(但是作为模块在groovy模板上完成工作,以便于迁移),因此您必须指定每个参数的类型

  • sbt console而不是python脚本

  • 用于解决依赖关系的sbt而不是内置解决方案(播放依赖关系命令)

  • 模块可用性,显然需要一些时间才能将它们全部迁移出来......

  • 对于java,它更喜欢用ebean代替hibernate(但你可以使用hibernate)

  • 对于scala,
  • 带有anorm(但你可以使用其他库)

  • 更模块化,更容易选择其他组件

  • 更多类型安全 - 在编译时检查视图甚至路由

  • 更好的表现

  • 类型安全支持,它是typesafe stack

  • 的一部分
  • 不那么神奇,没有那么多字节码生成和类似的东西

  • 更多标准,(游戏项目只是标准的sbt项目)

  • 不同的控制器API(更详细,恕我直言)您可以将simple play 1.x crud controllersimilar play 2.0 one进行比较

  • scala是一等公民,但同样支持java(每个都有原生API)

  • 热重编译速度较慢(它还处于测试阶段,我们希望他们能够解决它)

  • scala IDE支持不像java那样成熟(但它的发展很好)

  • 委托给akka的异步支持

  • 为不同类型的数据源做好准备,比如nosql dbs

有关详细信息,请查看play 2.0 page(可用的西班牙语翻译here)和RC1 documentation

无论如何,我认为主要区别在于1.x尝试构建自己的堆栈,同时逃离j2ee,现在它们是基于scala,akka,sbt和支持的新的替代堆栈的一部分像类型安全的公司......

答案 1 :(得分:18)

我发现以下几点很重要。有些是专业人士,有些是反对派。你必须自己看看你喜欢什么版本。

  • 核心是用Scala编写的,所以如果你不是Scala开发人员,你就不能自己修复bug。这是1.2的优势。此外,如果文档不是很好,你就会丢失。在游戏1.2中,您可以简单地查看代码。使用eclipse,您可以使用IDE轻松搜索参考。我不确定它是否存在类似Scala的IDE。我听说eclipse和intellij合作得很好,但没有经验。

  • 组件在2.0中更松散耦合。在Play 2.0中,您可以轻松选择首选的模板引擎或持久层。在1.2中,选择除JPA之外的东西更难以持久。

  • Scala现在是一等公民,所以如果你想用Scala或Java编写你的应用程序,你可以自由选择。

  • 对其他框架的依赖性更高。例如,他们现在需要Scala和Akka。两者都很好,但很复杂。因此,如果其中一个框架出现错误,您可能会遇到大麻烦。在游戏1.2中我只看到了Hibernate的风险。

  • “Everything”现在是类型安全的,可以由编译器检查。

  • 将Python更改为SBT意味着您需要在开发计算机上拥有更多内存。我的意思是Scala编译器至少需要512 MB RAM。这可能是连续构建服务器上的问题。

当然,Codemwnci提到了许多小细节。

答案 2 :(得分:13)

您的清单是一个非常好的开始。我的列表与一些额外内容相似。

  • 模板已从Groovy迁移到Scala。
  • Scala成为一等公民,而非可选插件
  • 更加注重类型安全,尤其是模板
  • Python to SBT
  • Hibernate to Ebean
  • Akka补充Play 1.x中的异步功能,而不是Akka作为模块
  • 核心中可用的Anorm(而不是scala插件)​​
  • 由于动态元素较少且编译较多而导致生产性能提升
  • 集成到TypeSafe堆栈

我们的列表之间存在重复,正如您所期望的那样。同时也提到这个名单是截至2011年11月,而第2场比赛仍处于测试阶段。

答案 3 :(得分:10)

这里有一些非常好的答案,我只想添加一些小点,并提供随着时间的推移变得更加清晰的细节。

浏览器内报告:在浏览器中播放2个Javascript错误报告(使用谷歌的闭包编译器)和CSS文件,而不仅仅是Java / Scala文件。这真的很酷。

部署为WAR:播放2 doesn't still officially支持部署或导出为WAR。存在plug-in应该提供此类支持,但处于测试阶段且存在一些已知问题。如果没有Servlets 3.1容器,完全支持所有Play 2功能,这将至少需要半年,可能更多。

插件:目前,播放1还有很多,如果你依赖一些插件,请确保它也适用于播放2。

IDE支持:IntelliJ 12应该内置支持播放2.你已经可以获得EAP(我用完了允许的超链接,所以你必须谷歌)。

主观意见:我觉得Play 2似乎牺牲了一些简单性来支持更高级的功能和更完整的类型安全性。我并不是说Play 2很难或不直观,只比Play 1少。

Play 1是Web开发人员为Web开发人员提供的Web框架。 Play 2是Web开发人员面向Web开发人员的前瞻性Web框架。

所以说,焦点略有转变,易用性不再是主要目标,而是两个主要目标之一。这当然只是我的意见,我知之甚少。

答案 4 :(得分:6)

您可以在以下博文中找到关于该主题的另一个观点:http://blog.awfbeat.com/post/22314115684/impressions-of-play-framework-1-2-4-vs-2-0

答案 5 :(得分:2)

摘自this文章:

  • 直接使用Google Closure Compiler,CoffeScript和LESS的资产管道
  • 一切都被编译,甚至是路线文件
  • 正在运行的应用程序的内存占用量低
  • 使用Iteratee / Enumerator进行异步/反应式编程
  • 如你所说,Scala,Akka,......
相关问题