我更喜欢使用脚本语言来完成短任务,比如一个非常简单的http bot,批量导入/导出数据到某个地方,等等...基本的一次性脚本和简单的东西。关键是,脚本语言只是一个高效的工具来编写快速的程序。至于我对Groovy的理解...
如果你要用Groovy编程,而你不想写一个快速的脚本,你不会被迫回到常规的java语法吗(我们知道与脚本语言相比,这是多么复杂),以便做更复杂的事情?例如,如果我想做一些http脚本,我不应该回到使用java语法调用Commons HttpClient吗?对我来说,脚本语言的要点是快速输入和较少强制的构造。还有一件事,当已经有这么多优秀的java库时,似乎没有任何动机开发基于groovy的库,从而使groovy看起来像是一种依赖于Java的语言,只有很少的脚本功能。
因此,现在我想知道我是否可以改用Groovy作为脚本语言,或者继续使用更常见的脚本语言,如Perl、Python或Ruby。
7条答案
按热度按时间izkcnapc1#
@僵尸们,我给大家举一个我最近写的一个剧本的小例子:
它使用了commons-net API,但是我想你会同意它比类似的Java程序有更清晰的语法。所以我不认为使用Java API会破坏脚本语言的目的。此外,它可以帮助你利用你现有的Java API知识,这是一个非常实用的方法。
a5g8bdjr2#
Groovy的一个目标是与Java透明地互操作。Groovy被设计成"一种具有脚本功能的依赖于Java的语言"。然而,我不认为这些功能是次要的-Groovy有许多静态编程语言(如Java)所没有的功能。
总结如下:如果您根本不关心Java,那么可以使用更通用的脚本语言,如Python或Perl。如果您希望以脚本式的方式使用Java代码库,Groovy是一个不错的选择。
tpxzln5u3#
Groovy对于编写脚本非常方便。最近我需要一个脚本来将Maven依赖项提取到
lib
目录中,最后得到了一个Groovy脚本。这个代码片段解析一个pom,并为您提供一个jar列表。对于XML解析来说,这真是太棒了!7rfyedvj4#
例如,如果我想做一些http脚本,我不应该回到使用java语法调用Commons HttpClient吗?
你会“马上回到使用Commons HttpClient”,但是你会使用Groovy语法而不是Java语法来调用它。Groovy语法比Java语法要紧凑得多,因此更适合脚本编写。换句话说,在Groovy中使用Java库比在Java中使用Java库需要的代码要少得多。
当已经有这么多好的javaone在那里的时候,似乎没有任何动机去开发基于groovy的库
Groovy库的作者通常不会开发一个全新的库,而是为现有的Java库提供一个“Groovier”API,例如Grails提供的Hibernate构建器和HTTP Builder(委托给Commons HttpClient)。
这些Groovy API提供了一种比直接使用JavaAPI更紧凑、更惯用的替代方法。
uujelgoq5#
Groovy“开箱即用”将大量常见类替换为Groovier版本或语言构造,包括用于XML、HTTP请求、访问SQL数据库和正则表达式的类。(尽管您仍然可以选择)。但是如果您的脚本使用的是裸Java库,Groovy将远远超过纯Java,Groovy的闪光点在于“粘合”代码,比如设置数据结构和文件I/O。
Map和列表允许您创建Java兼容的列表和Map;与Java类一起工作的常规Java对象。Groovy经常将带有变量声明和初始化的多行Java方法调用转换为一行代码。
考虑下面这个简短的代码片段,将整个文件加载到String中:
对比
异常处理在脚本中通常不是一个重要的考虑因素,可以方便地忽略它。
Groovy作为一种脚本语言的主要优势是可以直接方便地访问大量的Java代码库,如果您不需要这样做,Groovy仍然提供了一个与其他语言(如Perl、python或ruby)一样丰富的脚本环境。
nnvyjq4y6#
Groovy Rocks,一旦你掌握了这种非常紧凑的语法,你就可以开始用它来做很多你刚刚用“慢方法”做过的事情。
前几天我参加了一个讨论,不知怎么的,我开始想知道在我们的一个系统中,一个GUID中有多少个字符。与其计算数字,不如这样做:
把它放在本地或共享脚本目录中,它将在未来存在。
iyzzxitl7#
仅用途:
脚本Jenkins中的示例: