JVM框架,哪一个更好?

4

我没有太多关于框架或语言的经验,所以需要您的帮助。

为了让您理解我的情况,我先介绍一下我目前所做的事情。

我使用Java/Spring MVC/Hibernate开发了一个Web应用程序。在前端,我使用了一些jquery datatables来进行与数据库的ajax调用,另外一页执行了一个存储过程,就这样。

现在,我对所有的配置、bean、hibernate映射、spring映射、apache tiles等都感到厌烦。

我尝试了Groovy/Grails,那似乎容易得多,但这意味着我需要学习Groovy,而且我听说它的性能不佳。

所以我接触了Play Framework,请问如果我使用Play Framework,是否可以让我的生活更轻松?或者我应该选择Groovy/Grails或甚至是Scala/Lift。

由于时间有限,我不能花太多时间去学习另一种语言,如果我可以继续使用核心Java并使用Play Framework,那将是很好的。

那么,是不是像RoR/python-django、grails等框架出现的原因就是因为我描述的这种头疼情况呢?还是还有其他原因?

谢谢,

格伦。


糟糕,我不知道那个,我会开始这样做的。 - glenn
有人可以告诉我开始使用 Play 所需的基本工具,以免在未来6个月内发现(例如哪些 IDE、ORM、插件等)? - glenn
@Gleen: 关于IDE,我建议使用IntelliJ IDEA(社区版本与Play和Scala完美兼容)或者Eclipse,如果你更喜欢的话。数据库方面,MySQL是最佳匹配(当然也可以使用其他数据库)。作为开发平台,Linux是值得推荐的,但在Windows上也可以运行。除此之外,我认为你不需要其他东西了。嗯,对了,还需要一个浏览器 ;) - Pere Villega
4个回答

10
我可以从一个使用 JSP/servlet 转换到 Grails 再到 Play 的 10 年 J2EE 开发者的角度告诉你。6 年前我发现了 groovy,非常喜欢它,我在其他项目中使用 groovy 和 GSP 模板进行代码生成。我真的很喜欢 groovy 的语法,因为你可以在一行代码中做很多事情 ;) 由于 groovy,我尝试了 Grails。但是,除了在项目时间的大约 20% 使用语言编写代码外,你还要处理 Grails 的约定,如何将这个和那个映射到持久层(在表面下面是 JPA)。所以你大部分时间都在浏览文档。

然后我找到了 play。它感觉非常自然。一切都很快速直接,有 80% 是未被干扰的高效编码,只有 20% 阅读文档。任何 Java IDE 的代码完成都足以支持。在 Grails 中,你需要一个 Grails IDE 或经常浏览文档。

对我来说 Play 最大的吸引力是热代码交换功能,几乎完全消除了构建阶段。Play 的类增强器为你提供足够的舒适性,以克服 Grails 中动态查找器的损失。同时,我甚至编写自己的增强器以获得更多舒适性。

在真正的项目中,强类型的 Java 语言对所有开发人员都是一个巨大的好处。你不能像 groovy 那样轻易地破坏它。

此外,如果你看一下 Play 包,你总会得到合理的默认值。所有开发人员都喜欢的东西。基于 jQuery 的 CRUD、优美的代码示例、良好的视觉体验。而且它尽可能地简约。这意味着你可以随时进入 Play 框架源代码并阅读代码以了解 Play 的行为。

综上所述,经历了10年的Java和J2EE的挫败感,几乎要放弃Java了,但我转而使用Play实现的Java,因为在Play中,它变得非常有趣,我再次爱上了它。我向其他两个开发者朋友推荐了Play,他们也很喜欢它。感觉就像一开始应该是的Java。快速、清洁、安全且非常有趣。我再也不会使用基于Java的其他东西,即使只是一个简单的main() ;)


1
我在职业生涯中感谢上帝的一件事情是我从未做过J2EE。我从PHP转到了JSP/Servlets,然后直接转向了“Play!”。J2EE这个词真的让我感到非常不舒服。它真正展示了一个IT专家可以被欺骗多年的无意义框架,直到有一天他醒悟并开始自己思考,才会意识到他的生活是多么不幸,因为这些无意义的框架。 - Basil Musa

9

开始玩吧!

经过6或7年的Spring/Hibernate,再加上几年的JSP/EJB,我对Java世界已经厌倦了,开始寻找其他替代方案,比如Scala、Node.js、Rails等。Play框架让我重新爱上了Java,尽管我仍然推荐使用Scala。

我在我的博客http://geeks.aretotally.inhttp://playframework.info上有很多关于Play的信息。

它非常易学,生产力惊人,而且你会玩得很开心!


谢谢你,这正是我所感受到的。我会试玩一下并查看你的博客。 - glenn
1
完全同意!但是当你想说服一个经理时,请准备好你的论据,因为最近我面对一些Java人,他们坚信所有受Rails启发和轻量级的Web框架都是“快速而肮脏”的,很难找到正确的论据而不进行概念验证!Play不仅仅是用来玩的!!!:(:(:( - mandubian

2

Grails 2.0的性能与其他静态类型语言基本相当。

根据您当前的架构,Grails是最自然的选择 - 您可以重用所有现有的类和代码,没有问题,并直接使用它。你可以自由地使用@Autowired和其他Spring注释、Java代码,而Grails会识别出来 - 因为Grails在底层使用了Spring。唯一需要稍微调整的部分可能是JSPs,但我能够让现有的JSPs和自定义taglib正常工作。Grails使用SiteMesh来组合它的Groovy Server Pages(类似于JSP),并消除了一些JSP限制的约束。

与Play、Lift、Clojure的Web框架、SEAM或其他框架无关——但如果您想从现有的东西过渡到更具生产力的东西,那么Grails将是最接近的选择。

当然,如今几乎每一个这样的框架都支持多语言编程 - 您可以在Scala中使用某些特性,在Groovy中使用其他特性,在Java中使用全部特性——编译器、构建环境和工具都在处理多语言开发。

长话短说,这取决于需求和风险管理——您是否需要函数式编程、动态类型、重用Spring控制器,还是只需要一些简化和生产力提升。

甚至一个简单的Spring 3.1升级可能会消除一些XML文件,使用注释来解决大多数问题。

祝您好运!


2
如果你问一个Play框架的人,他会告诉你使用Play。如果你问一个Scala/Lift的人,他会告诉你使用Scala/Lift。
理想情况下,你希望找到一个同时使用过Groovy/Grails、Scala/Lift和Play的人,但不幸的是这样的人并不多。
就我个人而言,我使用Groovy和Grails,并且非常喜欢它。如果你已经了解Java、Spring和Hibernate,那么你已经掌握了大部分使用Groovy/Grails所需的知识。
如果你不想花费太多时间学习一门新语言,我建议你远离Scala,因为它与Java截然不同,而Groovy几乎是Java的超集,并具有熟悉的语法。
我对Play几乎一无所知,但我会担心社区的规模——可以通过在stackoverflow上比较Play和Grails问题的数量来了解。

3
所有社区都需要成长,规模并不如活动的活跃程度重要 ;) - Pere Villega
社区在我看来是Play的一个强大组成部分,但我有点怀疑,因为我也是其中的一员。:) Typesafe是Scala背后的公司,他们选择Zenexity和Play来构建他们的网站,这是一个好兆头。 - Felipe Oliveira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接