51

Play 框架提供了以下快速概述,但除了 Groovy 模板引擎(如果需要,可以在 Spring MVC 中获得)之外,Spring 似乎提供了所有相同的功能以及更多......

  • 修复错误并点击重新加载!编辑您的 Java 文件、保存、刷新您的浏览器并立即查看结果!无需编译、部署或重新启动服务器。Spring 会这样做,这会很烦人。

  • 无状态模型Play 是一个真正的“无共享”系统。为 REST 做好准备,它可以通过在多台服务器上运行同一应用程序的多个实例来轻松扩展。典型的 Spring 应用程序有一个无状态的应用程序层;除非您愿意,否则它不是纯粹的 RESTful,但 Spring 已经“为 REST 做好了准备”。

  • 高效的模板系统一个干净的模板系统,基于 Groovy 作为一种表达语言。它提供模板继承、包含和标签。Spring 使用 Java,但 Groovy 也是一种选择。

  • 快速解决错误发生错误时,play 会显示源代码和包含问题的确切行。即使在模板中。Spring 也这样做。

  • 创建一个很酷的 Web 应用程序所需的一切提供与 Hibernate、OpenID、Memcached... 和插件系统的集成。Spring 集成了一切,甚至更多。

  • 纯 Java代码与 Java,使用任何 Java 库并使用您喜欢的 IDE 进行开发。与 eclipse 或 netbeans 很好地集成。Spring 也是纯 Java 的。

  • 真快启动快,运行快!主观的,但春天很快。

那么 Play 框架实际上与 Spring MVC 有什么不同呢?
简而言之,Spring 可以做什么 Play 框架不能(反之亦然)?

4

1 回答 1

11

我发现双方的“纯 Java”声明非常有趣。

当然,一个项目只使用 java 是不现实的。不过,“纯 Java”标签应该有一些标准,我认为这两个框架都不符合条件。

Play 实际上修改了 Java 语言的语义。只要明确规定就可以了。如果您进行一些字节码操作,请诚实对待它。通常它是通过 AOP-ish 技巧完成的,实例方法用额外的行为装饰,它们的清单行为——这些写在代码中,通常被保留。这并不难接受,我们可以假装我们的代码是框架的子类,并且我们的方法被其他行为覆盖。

在 Play 中,一个静态方法调用同一个类中的另一个静态方法可以产生神奇的效果,其行为与方法调用完全不同。如果 Java 程序员不能再确定什么是静态方法调用,那将是一个大问题。

Spring - 好吧,他们的 Java 部分仍然是纯 Java。但它是如此神奇(来自 java 的 POV),并且如此严重地依赖于一个沉重的框架,将 Spring 称为“纯 Java”,如果我们忽略肉的话,就像称汉堡为“纯蔬菜”一样。肉是最好的部分!

于 2010-08-26T18:20:37.407 回答