我知道这是一个duplicate,然而,Grails世界在一年多前提出这个问题已经有了很大的进展,就像Eclipse中的IDE支持一样,所以请不要盲目关闭它。
我认为答案是肯定的,并且已经开始使用Grails 1.2.0进行了一个新项目,并且调查了STS Eclipse Integration的Groovy / Grails位。
我认为这个问题值得重新审视一年后的Grails进化,当答案肯定是混合的。
因此,作为一名经验丰富的Java Web开发人员,我有这些问题,并希望我的假设受到挑战:
由于
修改 我正在学习,我对框架的生活有一些重要的抱怨 - 而不是框架功能本身。我添加这些是因为我认为它们应该是考虑因素并且基于我的经验和意见,并且可以帮助那些试图决定是否去学生的人。我也可能表现出我对框架缺乏经验,因此这些都不是批评的批评。我是一位经验丰富的开发人员,这就是我所发现的:
调试真的很难。事实上,它几乎是不可能的,特别是作为框架中的初学者,当你最需要可靠的调试器朋友时。我花了更多的时间来跟踪代码的某些部分中的语法错误问题,以及引用在堆栈中某处导致静默失败的域字段。
记录非常糟糕。你有两种模式,“没什么用处”和“过多无用的东西”。单个页面请求后,我的调试日志为128Mb,并且不包含任何有关我的错误的信息。在我看来,整个日志问题需要在框架中重新考虑。
STS Eclipse IDE具有边际价值。除了语法高亮之外,它没什么用处。您无法调试代码,因此它是一个美化的编辑器。代码提示是不完整的,据我所知,根本没有GSP支持。它也是我桌面上最慢的Eclipse插件 - 大约2分钟即可启动。这是非常缓慢的。我已经恢复了文本编辑器(您会注意到所有在线教程视频也会这样做)和一些自定义语法hilighting。
我对性能有一些严重的担忧。有点太早说,但我已经发现自己因为休眠而调整了数据库。也许这是可以预料到的,但我真的必须保持我的域模型简单的约定,以产生高性能的查询。
最后一个,您的逻辑域模型和您的物理数据库模型应该相同的约定不是一个明智的默认设置,在现实世界中不太可能出现这种情况。我知道你可以将两者分开,但它会产生一定程度的复杂性,如果扩展惯例,我认为可以避免这种复杂性。关于构图和what you need to do to make it work in practice的文档不充分。
答案 0 :(得分:56)
我已经使用Grails超过4个月了,我将尝试给你我个人对Grails及其可用性的感觉。
Grails现在是否值得与Ruby或其他人自己合作?
当然,答案不是'是'或'否',而是取决于。这取决于你的要求(你需要在Java世界吗?),你的偏好(你更喜欢面向域的开发,你更喜欢Groovy ......)? 但是,我可以回答Grails是Rails的一个重要替代品。我相信无论你的Rails应用程序是什么,你都可以使用Grails。但是,根据项目的性质,可能需要更多或更少的时间。同样,如果您熟悉Rails而不熟悉Grails,那么Rails是更安全的选择。
它是否已经克服了它的错误开始?
是即可。如果你看一下我最初的消息(在这个网站或其他网站上),我对Grails的bug很抱怨。但是,你只需要记住Grails在边缘有点粗糙(例如,不要过多地使用域继承),一旦你熟悉了框架,你就不会遇到太多不好的意外。我并不是说Grails不是马车。它肯定不仅仅是Rails。但是,它比
它真的能带来快速发展的好处吗?
是即可。您几乎不需要处理数据库设计。由于Convention over Configuration,配置几乎从一开始就为您完成。您的应用程序很容易维护。我看到的唯一缺点是前端开发没有其他技术(如Rails或ASP)那么丰富
它是否适用于真实世界的制作应用程序?
我不能说因为我仍然没有访问我的网站,但我非常自信,因为 sky.com 正在使用Grails并且网站吸引了大量的流量 - 周围 每天700万次页面浏览量。性能再次取决于您的应用程序架构和设计决策。
Eclipse插件是否比它更好并且适合用途?
不知道。我正在使用IntelliJ,但我想根据我在Grails领域看到的抱怨消息,它比一年前好多了。
我希望它有所帮助。
答案 1 :(得分:41)
最近开始了一个Rails项目,一直在用Grails做一些事情。
Rails 的主要内容是有很多东西对dev(我讨厌)完全不透明,当你开始添加更多插件时,这会增加/ generators / libs / etc,因为要合并它们,你需要修补一些东西。您会感觉 rails + plugins 只是一个巨大的DSL破解,如果您使用插件+版本的错误组合,它就会开始破坏。
使用 Grails ,尽管生态系统要小得多,但一切都趋于相对一致。 DSL方法并不常用,通过使用传统但无聊的设计(我的意思是使用类,接口等而不是DSL),更容易理解管道的工作原理。
进行一对一的比较,以下是它的结果:
以下是一个例子:
结论:
答案 2 :(得分:17)
非常值得!
我们在几个项目中使用Grails,所有这些都取得了巨大的成功,原因如下:
简单 - 这是我们使用过的最简单的框架之一
遗留代码重用 - 我们所要做的就是获取遗留代码并将其放在lib或src文件夹中并完成。对我们来说很棒。
传统数据库结构 - 如果您想在旧数据库上生成数据可视化,这是一个很棒的工具。
现在,关于可行性:
错误:自1.1版本以来我们没有遇到太多错误(版本1.0对我们来说太麻烦了)
工具:Netbeans在这方面确实有所改进,但它甚至还没有像Intellij IDEA这样的其他工具(非常支持!)。关于Eclipse也是如此。
便携性:我们的项目从未遇到任何问题。
答案 3 :(得分:9)
我们现在有六个Grails应用程序正在生产中,虽然Grails与java框架不同并且需要一些学习时间,但它已经得到了回报,因为我们使用了敏捷技术。详细说明:
这就像所有新技术一样,我建议制作原型,代码评论,配对编程,也可以使用一些咨询。
答案 4 :(得分:7)
非常值得。我已经使用它超过一年了,并且喜欢它。我过去常常回避这些类型的rad工具,但它改变了我的工作方式。随着1.2版本的发布,它可以获得更好的堆栈跟踪信息(特别是对于GSP)。
我在缩放方面遇到的唯一问题是hibernate和它的缓存,这实际上不是grails问题。即使是那些我一般不喜欢休眠的人,Grails用GORM包装它的方式对我来说也是一件艺术品。标准关闭方面非常适合使用。
答案 5 :(得分:6)
我还没有找到一个熟悉Grails和Rails并且更喜欢Grails的人。
如果你们两个都很清楚,那么你几乎肯定更喜欢Rails。
Grails通常会吸引那些担心平台变化的Java开发人员。
在这种情况下,我认为JRuby可能是一种更好的方法,可以在老化的传统jvm上采用敏捷方法。
答案 6 :(得分:5)
最近我使用Grails作为项目,我希望与标准J2EE应用程序开发相比,分享我们的经验。
它真的能带来快速发展的好处吗?
当然,确实如此。即使脚手架路径提前离开并且约定覆盖了自己的需求,启动期也很短,因为我们不必关心许多不同的技术。这种轻量化使我们不仅工作更快,而且更加精确和清洁。
编写标签从未如此简单 - 在JSF中我们首先考虑是否值得付出努力,而Grails我们只是这样做。尽管不同的测试用例和模拟策略有时不一致且有问题,但使用testdriven并实现高覆盖率也非常容易。
从Java切换到Groovy是一件非常愉快的事情,我们喜欢拥有列表和地图文字,闭包,构建器,抛弃我们在Java中的锅炉板“map”实现,并编写紧凑,有意义且专注的代码。
降低开发速度的原因是不那么完美的IDE支持,这也适用于我们使用的IntelliJ插件。分散在不同地方的糟糕的,通常是旧的甚至是错误的文档(挫败了“搜索结束”的承诺)也阻碍了快速发展。所以我们经常不得不回到源代码阅读 - 随后被底层的Spring类层次结构吓到了。
答案 7 :(得分:4)
调试非常困难。 我从来没有发现这是一个大问题。你可以附加一个调试器并遍历,或者将一堆println / logs粘贴到代码中以解决最新情况。
记录非常糟糕。 我同意堆栈跟踪通常提供4页无用的信息,偶尔会提供信息。然而,为这样一个令人敬畏的框架付出的代价很小。
STS Eclipse IDE具有边际价值。 Eclipse对Grails的支持很差。如果可行的话,使用IntelliJ。我是一个紧张的人,但如果我的公司允许我,我很乐意为IntelliJ支付现金。
答案 8 :(得分:4)
我从早期的1.0-beta开始就一直在使用Grails,如果你来自Java商店,我只能建议你认真对待Groovy / Grails。
如果你是一家Java商店并考虑使用Ruby Rails,那就去吧 - 去Grails吧。如果grails不适合你,那么你总是可以启动Rails。
答案 9 :(得分:4)
我将在近十个应用程序中使用Grails分享我3年的经验。我无法与Ruby on Rails进行比较,所以我会回答你的其他问题。
它是否已经克服了它的错误开始?
它真的能带来快速发展的好处吗?
Eclipse插件是否比它更好并且适合用途?
它是否适用于真实世界的制作应用程序?
答案 10 :(得分:2)
我建议你自己尝试一下。我喜欢Grails的灵活性和开发速度。但是你可以看到其他人的经历不同。我希望能够使用Java平台为我的客户开发快速应用程序,我发现Grails可以很好地为我们工作。
我还发现前端非常灵活。我也认为你需要使用常识并仔细选择你的插件。我坚持使用Springsource支持的插件。
答案 11 :(得分:2)
根据我的经验,Grails在桌面上带来了一些极具吸引力的功能,绝对值得学习和使用。
Java喜欢语法和groovy语法糖。最喜欢这两个世界。您可以立即从Java开始,而不是学习像Ruby这样的新语言的语法,然后慢慢地你可以转向强大,简单和直观的groovy语法
对于项目经理来说,除非出于某种原因“不使用”grails有令人信服的理由(来自更高层次的阻力,采用新技术或其他东西),我认为没有任何理由不能使用grails使用过或至少尝试过。
要回答有关调试的问题,并不难。如果使用Netbeans IDE,调试很容易。这让我再提一点。在对所有IDE进行了几次实验后,我们发现Netbeans最适合做这项工作。它更好地支持代码完成,语法高亮和调试等。在我看来,STS还不够好。
答案 12 :(得分:2)
Grails Eclipse插件是垃圾。它毫无理由地崩溃,并不能真正支持Groovy的灵活性。据传NetBeans和IntelliJ要好得多,但我还没有尝试过。
它有效吗?当然可以。甚至Ruby on Rails也会执行,只要你在这个问题上投入足够的服务器。不过,我不知道Grails如何与各种Java框架进行比较。
它真的能带来快速发展的好处吗?好吧,我仍然缺少很多很好的Ruby / Rails东西。它不会自动识别日期和枚举请求参数(然后,Rails也有一些日期问题),TimeCategory应该是标准配置的一部分但不是。但是还有很多东西需要非常少的配置。
这并不是Rails所在的地方(我特别期待Rails 3),但与许多Java框架相比,使用起来要好得多。即便如此,表面下方的魔法也比Rails更深。例如,Constraints的系统非常强大,但是建立在一层巨大的无法穿透的Spring之上,如果你想以稍微不同的方式使用相同的功能,那么它就非常不灵活。 Rails更容易被颠覆,IME。
值得吗?是。这是一个比其他更好的选择吗?这取决于。
答案 13 :(得分:1)
关于eclipse插件,仍然是它的方式,但你可以使用Spring Source(SpringSource Tool Suite)的eclipse版本
http://www.springsource.com/products/sts
与之前的插件版本相比,它相当不错,而且由于Spring Source收购了负责grails和groovy的公司,你可以预期STS将会更快地变得更好
答案 14 :(得分:1)
Eclipse插件是否比它更好并且适合用途?
去年它确实有了很大改善。十二月,我参加了伦敦的Groovy& Grails Exchange。关于已记录的Eclipse / SpringSource STS中的Groovy& Grails集成,有一个很好的讨论,请参阅video。
从我的观点来看,Eclipse获得了很多支持。目前,IntelliJ似乎略微领先,但可能会在未来几个月内发生变化。
答案 15 :(得分:1)
就个人而言,我学习了RoR并将其用于一些家庭项目,但之后转而使用Grails,主要是因为它在JVM上运行,因此我希望能够利用过多的Java性能/性能分析程序,在代码成为问题之前帮助识别代码中的任何瓶颈。
总的来说,我没有发现RoR与Grails使用的IDE质量差别太大。虽然,公平地说,我在Linux上编程并且没有尝试使用TextMate进行RoR开发。当我使用RoR时,我使用了Netbeans。
现在我正在使用STS进行编程,我发现很高兴与Grails一起使用,尽管我仍然发现方法检测/完成可以更好地工作。
答案 16 :(得分:0)
它是否已经克服了它的错误开始?
它仍然很可怕。我不知道他们的开始,但是从Grails 2到Grails 3的迁移仍然是噩梦,他们的破解比他们解决的要多。
它真的能带来快速发展的好处吗?
我花了一个小时制作Grails的测试来在控制台中输出内容(它不能开箱即用),即使在Java中,你也不会花费这么多时间从测试中输出内容。
它是否适用于真实世界的制作应用程序?
我仍然不认识一个着名公司正在用Grails构建一些东西。
Eclipse插件是否比它更好并且适合用途?
我不知道为什么还有人在使用Eclipse,但是对Grails 3的IntelliJ支持无法使用。
所以,回答主要问题:
Grails(现在)值得吗?
如果您负担不起Microsoft Access许可证,可能。对于真正的项目,我会远离Grails。事实上,这只是一个死产的孩子。
答案 17 :(得分:0)
根据我截至2013年底的经验。
赞成
缺点
答案 18 :(得分:0)
我想指出另外两个考虑因素,内存使用和就业市场。 Grails应用程序需要大量内存,尤其是在开发模式下,例如600 Mb适用于中型应用。在生产模式下部署时,例如Tomcat中的war文件,用法可能约为500 Mb。这部分继承自使用Java。
就就业市场而言,据我所知,Grails程序员在职位空缺公告中的需求与例如Django和Ruby on Rails。
答案 19 :(得分:0)
我会说不。对于大多数用途来说,它仍然是臃肿的,imho,特别是如果你只是想要原型。我们不需要所有的代码,所有那些与grails捆绑在一起的依赖项,以便创建Web应用程序。每次想要发布Web应用程序时都不需要spring。在向整个堆栈添加完整的依赖项之前,请查看您要完成的任务。我认为了解您的应用程序包含的内容非常重要。
我建议看看像ratpack这样的东西,它更轻,就像红宝石的sinatra一样。
答案 20 :(得分:0)
我是一名全职的Java开发人员,但我的业余爱好项目使用rails。我们评估了一年前工作项目的Grails。我对grails的体验让我感到有些失望,这就是我开始研究rails的原因。使用我的印象是,虽然groovy与ruby作为一种语言并不遥远,但rails提供了比grails更好的体验。很简单,rails似乎解决了更多现实世界的问题,特别是当你考虑到可用的好宝石数量时。我正在考虑提供搜索,版本控制,rss,非crud应用程序,与云服务集成等等。 我得到的印象是,grails大约是rails 1.x的水平。到本月底,轨道3应该已经发布。我们实际上决定现在在工作中使用rails。最后,Java开发人员更容易获得grails,但最终缺乏改进以满足更广泛的项目需求。