Java,在开发过程中使用Groovy(Grails)只是为了能够在不重新编译的情况下测试代码?

时间:2011-03-31 05:22:43

标签: java scala grails groovy dynamic-languages

我使用Spring MVC进行Java Web开发工作,基本上我不得不做一个敏捷类型的开发,我必须做很多小改动,有时我最终会浪费很多时间来编译我做了一个改变(我为一家初创公司工作,我没有足够的时间进行单元测试,等等,这不太理想,我不一定打算长期留在公司但是我只是寻找适应当下的方法)。

我正在开发的应用程序需要快速,并且它会进行大量的高容量数据处理(它是一种搜索引擎,但不是网络搜索引擎)所以它必须是生产应用程序的常规编译Java但是我想知道我是否使用Groovy和Grails,或类似的东西进行开发,如果我可以把它写成常规Java,然后实时测试代码而不必重新编译。我想知道这样做会有多少努力,只要它能够像编译的Java一样工作。很抱歉,如果这是一个新手问题,我不知道在哪里可以查找有关这方面的信息,因为大多数关于Grails的内容似乎更倾向于模仿脚本语言而不是我想要使用它。

2 个答案:

答案 0 :(得分:4)

敏捷是一种心态,它与编程语言或框架无关。我没有足够的时间不做单元测试。

如果您使用Java编写代码,则使用Java编写代码,而不是使用Groovy编写代码。 Groovy是Java的(几乎)超集,因此理论上你可以在Groovy中编写类,然后将它们编译为Java,但这种方法存在许多问题:

1)在你的代码中滑动一些不正确的Java很容易,闭包只是有用的:-) 2)Grails不容易翻译成Spring MVC,所以你也必须重写那个位。

所以,我个人不会使用Groovy / Grails。

当你说编译时,你真的是指建立战争并重新部署吗?大多数IDE(Eclipse,Intellij等)在保存文件时重新编译一个类,因此没有延迟。假设您正在使用这样的IDE,您可以在Eclipse中运行您的(Tomcat)服务器,并自动重新部署内容,并且如果需要,Tomcat会自动重启。

如果这仍然不够快,我建议JRebel,这是非常好的,我分发了真正的钱许可证。使用JRebel意味着您(通常)甚至不需要重新部署。您在IDE中更改了Java文件,并且无需重新部署即可在服务器中进行更改。我强烈推荐它。

我要做的另一件事是为你的代码编写单元测试。您无需检查它们,但它们是一种有助于提高工作效率的工具。

答案 1 :(得分:1)

我在这里要做的就是在java代码中嵌入groovy脚本,如下所述:

http://groovy.codehaus.org/Embedding+Groovy

通过这种方式,您可以更改groovy代码而无需重新编译。我们在上一个遗留应用程序中使用了这种技术,需要花费10-15分钟来重新编译和安装。

Groovy在JVM中运行并动态编译为字节码,因此无需担心它的“生产性”。