【问题标题】:Java web frameworksJava 网络框架
【发布时间】:2010-12-21 23:22:19
【问题描述】:

我环顾四周,看看 java 中是否有与 django/RoR 等价的东西。

我发现:

有没有人尝试过这些框架,或者你知道其他的吗? 它们比 django/RoR 快吗?

【问题讨论】:

  • Web 框架的哪些元素对您来说很重要?可扩展性、生产力、文档等??
  • 可扩展性、生产力、文档和体面的资源消耗(即使每个人都说这对 Web 应用程序来说并不重要,但在云环境中它会很重要)
  • rails、wicket、grails、play、list、jsp 的基准:jtict.com/blog/rails-wicket-grails-play-lift-jsp

标签: java frameworks grails playframework


【解决方案1】:

大约一年前我发现了 Grails,并且没有回头。它吸收了 Ruby on Rails 的很多想法(最初它被命名为 Groovy on Rails),并且拥有丰富的插件/扩展生态系统。 Grails 和底层 Grails 语言(Java 的超集)使编程变得很有趣——您可以真正专注于基本要素。它的 GORM 功能(在 hibernate 之上的一个层)也非常强大,除了插件系统之外,这是检查它的两个重要原因之一(你也可以在你的 java 应用程序中使用它)。

随着 1.2 版即将问世,我觉得它功能丰富且成熟到足以成为任何开发人员都应该拥有的工具。

就性能而言,它肯定不如纯 Java,但是您可以使用从 spring/hibernate/J2EE 的所有内容进行优化,并且您总是可以将一些关键的代码放入纯 Java 中。最近有一些实验允许使用静态方法解析运行部分 Groovy 代码,再加上调用动态支持,应该会提供巨大的性能提升。

其他要在 Java 中查看的还有 Spring Roo 和 AribaWeb。

根据附加资格更新

可扩展性、生产力、 文档和体面的资源 消费

  • 可扩展性 - 您可以获得经过验证的 Java / Spring / Hibernate 堆栈,尽管我不能说 Grails 本身提供了很多。
  • 生产力 - 这是使用 Grails 的主要原因。您确实有性能开销,但当开发时间/生产力更重要时,您会使用 Grails。
  • 文档 - grails 文档非常棒,仅 Grails 就至少有三本好书。社区蓬勃发展,非常有帮助。
  • 资源消耗 - 这是一种权衡。 Grails(部分是因为底层的 java 堆栈)是资源密集型的。如果我正在构建类似 Google 的东西,Grails 将不是我的选择。但是,在任何复杂的 Web 应用程序中,缓存解决方案都会做得很好,所以这里同样适用。

【讨论】:

  • 好吧,圣杯看起来很棒。但是我想我会尝试“玩”,它看起来真的很有吸引力..我唯一担心的是资源消耗以及是否比php / python / ruby​​更差或更好,我没有找到太多关于它在谷歌上。
  • 听起来不错 - 玩起来很酷。还可以查看 AribaWeb 视频 - 看起来很可爱。请记住,使用 Grails,您还可以获得 Groovy 的强大功能,这本身就是一种优势(当然,性能是一种权衡)。
  • 好的,我会看看 AribaWeb。 Play 框架也将 Groovy 用于其模板 ;-)
  • 相比其他java web框架,资源消耗上玩起来应该很轻松。它不会强迫你使用整个 j2ee 堆栈,它的资源非常少,基本上它只是 netty 和几个库......只需检查它的启动速度......此外,使用 jetty 可以让它赚很多更智能地使用线程,查看这篇文章:blog.heroku.com/archives/2011/8/29/play
  • 我对 Grails 非常失望。开始一个新项目既快速又容易,但项目越大,你的速度就会越慢。调试真的很难,工具支持比 Java 差(虽然 IntelliJ 做得很好);很多小问题和奇怪的魔法让生活变得艰难。在我上一个 Grails 项目之后,我真希望我用普通的 servlet 来完成它!
【解决方案2】:

Stripes 似乎非常轻量级,并且包含约定优于配置。

【讨论】:

  • 条纹看起来确实很有趣。 +1
【解决方案3】:

使用过支柱、检票口、导轨和挂毯,我建议您查看Tapestry 5

支持

  • 在容器类重新加载中(因此您不必在每次进行更改时重新启动您的 web 应用程序)
  • 快速的开发时间和更高的生产力 - 它使用基于组件的模型和声明性连接
  • 最少的配置,不管怎样,主要是在代码中,约定优于配置 - 等等。
  • 没有要扩展的基类
  • 一种用于模板文件的表达式语言
  • 良好的 ajax 支持
  • 出色的调试支持,客户端和服务器端
  • 良好的数据访问集成
  • 一个活跃的社区
  • 从头开始编写,牢记performance。例如页面池化(以最小化资源使用)、页面压缩、空白消除,所有动态代码都编译为本机。
  • 良好的 bean 和表单支持 - 使常见任务变得简单。只需一行模板代码和一个最小的骨架服务器后端即可编写一个可排序的数据库支持的 drid。

唯一的缺点是文档,虽然用户组/邮件列表非常活跃,而且大多数问题都得到了很好的回答,但文档很好,但有点简洁。

(另外,请务必只查看 T5 - 而不是 T4、3、2、1 .....因为这些与当前版本非常不同)

更多关于为什么here

【讨论】:

    【解决方案4】:

    考虑尝试Lift Framework。真的很棒。

    【讨论】:

      【解决方案5】:

      每当您考虑应用程序堆栈(语言、框架等)时,您还需要考虑您要解决的问题以及您拥有什么样的编程技能。我发现,与更初级的程序员相比,更有经验的 Java 程序员在使用 Groovy 和 Grails 堆栈方面效率很高。

      您提到以下关注领域:

      • 可扩展性:具体指什么? (页面浏览量/秒,# 事务/秒等...)一般来说,Groovy 和 Grails 在渲染页面时会扩展,但是与任何使用 ORM 的应用程序堆栈一样(在 Grails 的情况下,您有 GORM)需要考虑一些开销。
      • 生产力:这里的主要优势之一 - 快速原型设计和快速开发对于 Groovy 和 Grails 来说是一件轻而易举的事,尽管它有助于让使用 Java 或 Ruby 开发的员工了解 Grails 框架实际上在做什么在引擎盖下”。有大量的 UI 插件可以帮助快速创建类似 web 2.0 的页面。
      • 文档:为 Groovy & Grails 编写的质量参考书越来越多。在过去的两年中,两者都非常成熟。当遇到错误/问题时,关于 Grails 框架的大部分内部工作,事情肯定没有很好的记录(当遇到错误时,框架的大部分输出是模糊的,或者充其量是不存在的)。如果您愿意卷起袖子并足智多谋地了解内部工作原理,那么您不会对这个堆栈感到失望。同样,经验丰富的程序员会发现这是第二天性,而初级程序员有时可能会沮丧地举手。
      • 资源消耗:存在开销,但是对于目前找到的大多数硬件(本地或云端),我不会太担心给定应用程序实例的物理资源消耗。

      希望这会有所帮助。

      【讨论】:

        【解决方案6】:

        我不了解 Play Framework,但要回答第二个问题, 我们正在使用 Google 的Webtoolkit 做一些项目。 可能值得一试。
        祝你好运!

        【讨论】:

          【解决方案7】:

          JRoR怎么样

          【讨论】:

          • JRuby on Rails 不是 Java Web 框架!它是在 JVM 上运行的 Ruby on Rails。
          • 问题本身也犯了同样的错误,所以想必提问者不仅仅指java :)
          【解决方案8】:

          我自己没有尝试过,但我的大学喜欢使用stripes

          有一个book 和一切。

          【讨论】:

            【解决方案9】:

            Spring Roo 声称是一个解决方案。

            【讨论】:

              【解决方案10】:

              我使用 grails 完成了一个项目,我发现它对于某些任务来说非常快,但是它在幕后做了很多“魔术”,这使得调试时变得困难。

              我还发现自己一遍又一遍地阅读文档,因为我觉得它不自然。一个简单的例子是控制器,其中动作被定义为字段(我很自然地将动作视为一种方法......)。我可以说一些关于 GORM 的事情,你需要知道一些特殊的词,当放入静态字段时会产生一些魔法,比如使字段瞬态...没有注释,没有自动完成......只有手册。

              至于玩!我发现它的开发非常简单和快速,易于学习和记忆。社区似乎比 Grail 的小,但它更活跃,回答也更快。唯一的缺点是它不依赖于 servlet 的 api,因此一些 3rd 方过滤器或其他东西很难集成,但并非不可能。请务必注意,您可以将 Play 应用程序部署在任何传统的 Web 服务器包中,并将其作为战争。

              在我看来,Grails 很棒,但您需要拥有丰富的经验才能提高工作效率,否则您会浪费大量时间阅读手册。因此,如果这不是您的情况,我应该推荐 Play!特别是如果你不熟悉 Groovy

              【讨论】:

                【解决方案11】:

                我不了解 Play Framework,但 Spring MVCStruts 将一起提供类似的功能。Hibernate

                还有许多其他选项可用。基本上你需要一个 MVC 框架(Spring MVC、Struts、Wicket)和一个 ORM 工具(Hibernate、iBatis)。当然,您需要自己集成所需的组件,但这已经做了很多次,您将能够找到大量信息。

                【讨论】:

                  【解决方案12】:

                  我不确定 Spring MVC 和 Hibernate 是否提供与 Ruby on Rails 提供的相同的易用性(实际上,我确信它要复杂得多......)。 我认为 Play Framework 更像 Ruby on Rails,但是我自己并没有使用它,只是观看了截屏视频并阅读了一些关于它的文档,所以如果你想拥有与使用 RoR 开发类似的体验,我想你可以最好尝试使用 Play 而不是 Spring MVC with Hibernate 之类的东西。后者的优点是它非常强大并且能够适应例如现有的数据模型(根据我对 RoR 的了解,这在 RoR 中并不是很简单)。 您可以考虑的另一个框架是 Groovy on Grails。虽然它不使用 Java(它使用 Groovy),但它非常类似于 RoR。它在底层使用 Spring 和 Hibernate(如果我是正确的),而 Groovy 的优点是您没有 Java 的严格静态类型。 Ruby on Rails 和 Django 极大地受益于实现它的语言的动态特性,而 Java 由于其静态类型而错过了这一特性。

                  编辑:啊,您在问题中已经提到了 Grails...

                  【讨论】:

                    【解决方案13】:

                    如果 grails 是一个选项(它实际上不是 java,而是一个 groovy 框架),那么基于 Scala 的 Lift 框架也是一个选项。

                    【讨论】:

                      【解决方案14】:

                      另一个选项是RIFE,它试图在仍然使用 Java 的同时拥有最小的 RoR 配置。在您的列表中,只有 Play Framework 具有该功能,其他都在 JVM 上,但不是 Java(如果这对您很重要的话)。

                      【讨论】:

                        【解决方案15】:

                        VRaptor 呢? - 它使用 Spring 作为 DI 容器和类似于 Rails Action-Pack 的 Controller/View 引擎。

                        【讨论】:

                          【解决方案16】:

                          AribaWeb 还支持 Groovy。在 http://aribaweb.org/ 上查看我们的其他功能,并了解我们提高 Web 开发效率的方法。

                          【讨论】:

                            【解决方案17】:

                            我们广泛使用 Stripes 框架,它的效果非常好。它真的很轻巧,它可以引导您对应用程序进行简洁的设计。它基本上只是向您隐藏了开发中无聊的部分,因此您可以专注于有趣的东西(一个这样的例子是indexed properties)。

                            【讨论】:

                              【解决方案18】:

                              我一直将http://www.ninjaframework.org/ 用于微服务,它与大多数 mvc 范例非常接近,如果您使用 rails、asp.net mvc 或 nancyfx,您就可以使用了。它非常接近这一理念,并且非常棒且易于测试。唯一的缺点是没有太多文档,但它非常接近 mvc 模式。它在框架中没有使用任何专有的东西,因此它是一个纯 Java 的解决方案。所以这弥补了文档的不足。

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 2012-04-04
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2023-03-30
                                • 1970-01-01
                                相关资源
                                最近更新 更多