Playframework Play Framework 1.0和2.0之间的主要区别是什么?
随着Play Framework 2.0的最新发布,我想知道是否有人可以从高层次的角度总结Play Framework 1和2之间的主要差异 我已经编译了一些(播放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插件 还有什么?阿克卡?你的名单是一个很好的开始。我的清单看起来很相
- 模板引擎: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。这在连续生成服务器上可能是一个问题
- 直接使用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支持部署或导出为战争。存在着一个本应提供