随着最近发布的Play Framework 2.0,我想知道是否有人可以从高层次的角度总结Play Framework 1和2之间的主要区别.
我已经编译了一些(播放1.0 - >播放2.0):
模板引擎:Groovy Pages - > Scala模板
持久性:休眠 - > Ebean
语言支持:Java - > Scala,Java
动态编译:字节码注入 - >通过SBT进行动态编译
构建系统:不适用 - > SBT
可扩展性:模块,插件 - >子项目,插件,SBT插件
还有什么 ?阿卡?
这是我的清单,当然,有一些重复
打破向后兼容性(从头开始重写)
scala与java编程的核心(学习scala协作)
模板的scala(但是作为模块在groovy模板上完成工作,以便于迁移),因此您必须指定每个参数的类型
sbt控制台而不是python脚本
sbt用于解决依赖关系而不是内置解决方案(播放依赖关系命令)
模块可用性,显然需要一些时间来迁移它们...
对于java,它有利于ebean代替hibernate(但你可以使用hibernate)
对于scala,附带anorm(但你可以使用其他库)
更模块化,更容易挑选其他组件
更多类型安全 - 在编译时检查视图甚至路由
更好的性能
类型安全支持,它是类型安全堆栈的一部分
不那么神奇,没有那么多的字节码生成和类似的东西
更标准,(游戏项目只是标准的sbt项目)
不同的控制器API(更详细,恕我直言)你可以比较一个简单的播放1.x crud控制器与类似的播放2.0一个
scala是一等公民,但同样支持java(每个都有本机API)
热重编译速度较慢(它还处于测试阶段,让我们希望他们解决它)
scala IDE支持不像java那样成熟(但它的发展很好)
异步支持委托给akka
更好地为不同类型的数据源做好准备,比如nosql dbs
有关更多信息,请查看播放2.0页面(此处提供西班牙语翻译)和RC1文档
无论如何,我认为主要区别在于1.x尝试构建自己的堆栈,同时逃离j2ee,现在它们是基于scala,akka,sbt和公司支持的新的替代堆栈的一部分像类型安全...
我发现以下几点很重要.有些是专业人士,有些是反对派.你必须自己看看你喜欢什么版本.
核心是用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提到了许多小细节.
你的清单是一个非常好的开始.我的列表看起来类似于一些额外的东西.
模板已从Groovy转移到Scala.
Scala成为一等公民,而不是可选插件
更加注重类型安全,特别是在模板中
Python到SBT
Hibernate到Ebean
Akka补充Play 1.x中的异步功能,而不是Akka作为模块
核心中的Anorm(而不是scala插件)
由于动态元素较少且编译较多,因此生产性能得到改善
集成到TypeSafe堆栈中
正如您所料,我们的列表之间存在重复.同时也提醒说这个名单截止到2011年11月,而第2场比赛仍处于测试阶段.
这里有一些非常好的答案,我只想添加一些小点,并提供随着时间变得更清晰的细节.
浏览器内报告:在浏览器中播放2报告Javascript(使用谷歌的闭包编译器)和CSS文件中的错误,而不仅仅是Java/Scala文件.这真的很酷.
部署为WAR: Play 2 仍未正式支持部署或导出为WAR.存在一个应该提供此类支持的插件,但是在测试版中存在一些已知问题.如果没有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框架.
可以这么说,焦点略有转变,易用性不再是主要目标,而是两个主要目标之一.这当然只是我的意见,我知之甚少.
您可以在以下博客文章中找到关于该主题的另一个观点:http://blog.awfbeat.com/post/22314115684/impressions-of-play-framework-1-2-4-vs-2-0