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

Playframework Play Framework 1.0和2.0之间的主要区别是什么?,playframework,playframework-2.0,Playframework,Playframework 2.0,随着Play Framework 2.0的最新发布,我想知道是否有人可以从高层次的角度总结Play Framework 1和2之间的主要差异 我已经编译了一些(播放1.0->播放2.0): 模板引擎:Groovy页面->Scala模板 持久性:休眠->Ebean 语言支持:Java->Scala,Java 动态编译:字节码注入->通过SBT进行动态编译 构建系统:不适用->SBT 可扩展性:模块、插件->子项目、插件、SBT插件 还有什么?阿克卡?你的名单是一个很好的开始。我的清单看起来很相

随着Play Framework 2.0的最新发布,我想知道是否有人可以从高层次的角度总结Play Framework 1和2之间的主要差异

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

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

还有什么?阿克卡?

你的名单是一个很好的开始。我的清单看起来很相似,还有一些额外的东西

  • 模板已经从Groovy转移到Scala
  • Scala成为一级公民,而不是可选插件
  • 更加关注类型安全,尤其是在模板中
  • Python到SBT
  • 冬眠
  • Akka补充了Play 1.x中的异步功能,而不是作为模块的Akka
  • Anorm在内核中可用(而不是scala插件)
  • 由于较少的动态元素和更多的已编译元素,生产中的性能得到了改进
  • 集成到类型安全堆栈中

正如你所料,我们的名单之间有重复。此外,我还提醒大家,该列表截至2011年11月,而play 2仍处于测试阶段。

我认为以下几点很重要。有些是赞成的,有些是反对的。你们必须自己看看你们喜欢什么版本

  • 核心是用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中,我只看到冬眠的这种风险

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

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

当然,Codemwnci提到了很多小细节

从文章中总结:

  • 直接使用Google闭包编译器、CoffeScript等的资产管道
  • 所有内容都已编译,甚至路由文件也已编译
  • 运行中的应用程序内存占用率低
  • 使用迭代器/枚举器的异步/反应式编程
  • 正如你提到的,斯卡拉,阿克卡

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

      • 中断向后兼容性(这是从头重写)

      • 用scala vs java编程的核心(学习scala协作)

      • scala for templates(但groovy模板作为一个模块正在进行工作,以简化迁移),因此必须指定每个参数的类型

      • sbt控制台而不是python脚本

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

      • 模块的可用性,迁移它们显然需要一些时间

      • 对于java,它倾向于使用ebean代替hibernate(但您可以使用hibernate)

      • 对于scala,随anorm提供(但您可以使用其他库)

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

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

      • 更好的性能

      • 类型安全支持,它是

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

      • 更标准,(播放项目只是标准sbt项目)

      • 不同的控制器API(更详细,IMHO),您可以将

      • scala是一级公民,但java同样受到支持(每个人都有本机API)

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

      • scala IDE支持没有java的成熟(但发展很好)

      • 委托给akka的异步支持

      • 更好地为不同类型的数据源(如nosql dbs)做好准备

      有关更多信息,请查看(提供西班牙语翻译)和


      无论如何,我认为主要的区别在于play 1.x试图在脱离j2ee的同时构建自己的堆栈,现在它们是基于scala、akka、,sbt,在typesafe这样的公司的支持下…

      你可以在下面的博文中找到关于这个主题的另一个观点:

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

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

      部署为战争:播放2支持部署或导出为战争。存在着一个本应提供