Grails vs Rails—我的想法

在我的blog的最近的一次评论中,Jared Peterson问道: 我想知道你关于在Rails和Grails之间做一个选择的所有想法。虽然我喜欢“允许他们两个一起(发展)”的理论,但是你的“一个也不要”是什么意思? 如果你开发了一个新的项目,会选择其中的一个吗?需要和很多已经存在的Java代码(这里的Rails,我猜是指JRuby on Rails)交互,你会选择什么呢? 同时,最近有一个朋友问我,“我想知道您关于Grails的诚实的、正直不带倾向性的观点?”我想我发给这个朋友的e-mail可以对Jared的问题有帮助。 我想它至少是让人尊敬的。它的竞争者像AppFuse,但是它有更加容易学习和记住的DSL。更少的代码,更高的效率。虽然看起来有些成熟度的问题,但我想它迟早会解决。问题是——Groovy语言的发展会有多快。这就像Rails和Ruby之间的关系。所以,当你开始使用Grails的时候,你就会想到,“Groovy语言好酷啊,我喜欢学习更多有关它的知识”。我喜欢Groovy语言的一个原因是对于资深的开源Java开发人员,Groovy语言的学习曲线实际上相当的平缓。您只需要一天就能学习到可以开发工作的程度。 这就是说,我认为有一系列的相当酷的工具来开发RIA。IMO、Flex或者GWT+Grails对于开发来说是一系列相当有趣的工具。这里有我最近写的关于分析Rails和Grails的一些引用: 比较Rails和Grails 它们都是优秀的开发架构。Rails更加成熟一些,但是创建环境是相当痛苦的(特别是在Windows上)。对于Java开发人员来说,Grails非常容易创建起来。Grails需要提高的地方是热发布和出错记录堆栈,但这些大概是Groovy语言的问题,出错记录堆栈是惨不忍睹的—很少在最初的几行指出类和行数。 对于热发布,Grails也没有Rails做得好。Rails的“script/server”启动WEB应用只需要几秒钟,而“grails run-app”则需要十几秒钟(即使是一个新的没有内容的应用)。即使是这样,Grails仍然是令人尊敬的。我真的、真的喜欢在IDEA里写Groovy代码,并且看到及时的改变。我不喜欢“test-app”以及Rails的“test:units”(也不喜欢“test:uncommitted”)。这些都被广泛的认为是Rails拥有一个好的测试的原因。 现在,Rails是可用的,而Grails是70%可用的。 对于Java开发人员来说,Groovy语言是非常容易学的。Ruby也容易学习,并且对于OO开发人员来说,也相当强大。两者都有编程的乐趣,并且有能力大大提高开发效率。如果你熟悉Hibernate、Spring、SiteMesh和JSP,那么你应该学习Grails。如果你精通这些技术,那么你一个小时之内就能学会Grails。你会在下一个小时大大提高生产力,并且在这一天结束的时候,你就会一个应用跑起来。这没有把任何的东西从Ruby拿开。我相信Rails也是一个优异的平台。它相当的酷,profiling和benchmarking内建在开发框架里,你可以轻松的判断你需要多少服务器的规模。 我使用IDEA来在这两种开发框架上做开发。通过插件,IDEA有Rails和Groovy的支持,而且它们都运行的不错。但是对于Grails的支持比对于Rails地支持要好。Grails提供代码完整、在类和方法上的Ctrl+点击,debugging和在IDE里开启/关闭应用。Rails不能提供在类和方法上的Ctrl+点击和debugging。 有没有Rails能做而Grails不能做的事情?这就不是我能够告诉你的。我想这取决于开发人员的热情和开发团队的选择。如果你是资深的Java开发人员并且喜欢这个生态和它的工具,那么选择Grails就更直观一些。如果你是资深的PHP开发人员或者在J2EE上感觉不好,那么你可能更喜欢Rails一些。对于两个开发框架来说,它们都有一个相同的事情——学习一个实际上会教给你另一个的知识。它们在很多方面都如此相似,以至它们之间的知识可以相互转移。 当然,这些都只是我使用这个两个开发框架工作了几周以后的一些观点。对于那些同时使用过这两个架构的人来说,你们是怎么想的呢? 最后,这里有一个在Javalobby上关于最近评论的引用: 当然,现在的难题是决定选择Django,Rails,Grails和GWT作为你的开发框架。然后,你不得不选择Ferrari,Porsche,Lamborghini 和 a Maserati。无论你选什么,它都不会使你失望。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


背景:    8月29日,凌晨4点左右,某服务告警,其中一个节点直接down掉,收到告警的同事让运维重启。    9点左右,内存监控上发现内存异常,堆内存涨速很快,即便GC也没有什么效果,频繁GC。    9点38,服务各种超时,影响整个app使用。处理方式:    当时由于很想要
https://support.smartbear.comeadyapi/docs/soapui/steps/groovy.htmlGettestcaseobjectToobtaintheobjectwhichreferstothecontainingtestcase,usethefollowingcodesnippet:Groovy def case=testRunner.testCase; Byusingthe tes
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能。查看最流行的扩展机制,比较性能并分析哪一个是最好的。  这是乐队之战,JMeter风格。 BeanshellV.JSR223V.JavaRequestSampler 在我们之前的帖子中,  JMeterPerformance和TuningTips  ( 由fantastik
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,同时支持面向对象Groovy:jvm上的脚本,较好兼容java语法,Groovy加强了Java集成。 可配置化的优势,可以将一些简单的逻辑公开给外部编辑和使用,增强了互操作性,复杂逻辑来说,可配置化代码的调试则会比较麻烦 Scala和Java
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部元件的访问testRunner.testCase开头1、向下访问testRunner.testCase.testSteps[testStepName]testRunner.testCase.getTestStepByName("新增一个空间")2、向上访问,用于访问同一项目中的其他testSuites和testCase下
在运行groovy的junit方法时,报了这个错误:java.lang.ExceptionInInitializerError atorg.codehaus.groovy.reflection.ClassInfo.isValidWeakMetaClass(ClassInfo.java:271) atorg.codehaus.groovy.reflection.ClassInfo.getMetaClassForClass(ClassInfo.java:241) atorg.codeha
基本语法1.Grovvy的注释分为//和/**/和java的一样.2.Grovvy语法可以不已分号结尾.3.单引号,里面的内容严格的对应java中的String,不对$符号进行转义.defs1='iamastudent$'printlns1iamastudent$4.双引号“”的内容中如果有$号的话,会先对表达式先求值.de
Tiobe发布了最新一期(3月份)编程语言欢迎度榜单,其榜单根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube统计出排名数据。TOP5几乎没有变化,Java和C语言牢牢占据前两名。Python相较去年上升一位进入TOP3,C++下
我有一个Google地图组件,作者可以在其中指定纬度和经度.我正在使用带有正则表达式的常规“输入”类型控件来验证它们是否是数字,但是,当试图解决指定范围的问题时(经度验证该值在[-180,180]内并且纬度[-90,90])但是,通过正则表达式进行验证似乎很麻烦,而且利用inputtype=“numb
我正在为未来的应用程序评估SpringBoot,并希望使用Groovy模板来实现其纯粹的可读性.不幸的是,我在迭代我添加到控制器返回的ModelAndView对象的对象列表时遇到了麻烦.这是我的控制器:@RestController@RequestMapping("/ships")publicclassShipsController{@Autowired
我有一个基于Spring的java应用程序,其中包含一些有用的组件.作为系统的一部分,我有一个groovy脚本,来处理一些报告.我想从groovy脚本中调用spring组件.当我用Java编写时,我需要在@Component中使用@Autowired注释,即@ComponentclassReporter{@AutowiredSearchServicesearchS
在Grailsi18n插件definedthusly中定义了一个messageSourcebean:messageSource(PluginAwareResourceBundleMessageSource){basenames=baseNames.toArray()fallbackToSystemLocale=falsepluginManager=manager....}是否可以覆盖我的resources.groovy中的fa
我正在寻找一种方法来反向工程RDBMS表(MSSQLServer)并生成JPA@EntityGroovy类.我们目前没有选择使用Grails和/或GORM,因此Grailsdb-reverse-engineer插件似乎很接近但不太正确.它生成符合GORM的类而不是JPA实体类.我们目前有一个gradle构建,它利用org.hibernate.tool.ant.Hibe
https://blog.csdn.net/Gdeer/article/details/83062523一、直接运行groovy程序因为groovy插件和android插件不兼容,所以不能在原始项目上使用groovy。 新建module,创一个JavaLibrary,取名lib。  修改lib/build.gradleapplyplugin:'java-library'depe
一、自动生成GET请求脚本1、配置Createascript在ngrinder管理台主页,点击script–>Createascript,并填写脚本名称和请求的url,如下所示:点击Create按钮,nGrinder会自动生成对应的脚本结构,如果没有参数需要设置的话,可以直接运行了。二、详细解析GET请求脚本ngrinder自动生成的脚本
我正在关注使用列表和地图作为构造函数的this博文.为什么以下列表无法强制反对?classTest{staticclassTestObject{privateinta=1;protectedintb=2;publicintc=3;intd=4;Strings="s";}stati
Information:java:Errorsoccurredwhilecompilingmodule'security'Information:javac1.8.0_131wasusedtocompilejavasourcesInformation:2019/6/98:31-Buildcompletedwith1errorand0warningsin3s116msError:java:读取E:\repository\org
ngrinder中的groovy脚本结构类似junit,同时在junit的基础之上封装了自己的注解,用来控制脚本的运行。一、运行逻辑图如下:此处只列出了groovy脚本的逻辑,jython脚本是类似的,在此不再单独介绍。二、各注解的使用比较三、关注点在ngrinder中,通常使用单进程多线程就足够大部分测试了,所以:
我有一个switch语句来处理javaenumfoo,并使用spock编写一些groovy单元测试.我已经添加了一个测试,它验证当前是否处理了每种类型的foo而没有抛出异常.现在我想测试一个无法识别的foo类型会导致抛出异常.要做到这一点,我将不得不嘲笑枚举,并已经看到这里概述的解决方案:MockingJ
我有一个groovy实体ClientInvoiceAttachmentExt,它扩展了java实体ClientInvoiceAttachment.ClientInvoiceAttachment具有@Id注释,但仍然看到“没有为实体指定的标识符”错误这是我的堆栈跟踪[Mar0317:11:54]ERROR|org.springframework.web.context.ContextLoader|Contex