我更喜欢使用脚本语言来完成简短的任务,比如一个非常简单的http机器人,批量导入/导出数据到某个地方等等......基本的丢弃脚本和简单的东西 . 关键是,脚本语言只是编写快速程序的有效工具 . 至于我在这一点上对Groovy的理解......
如果你要在Groovy中编程,并且你不想写一个快速的脚本,你不会被迫回到常规的java语法(我们知道如何与脚本语言相比这是错综复杂的)以便做更复杂的事情?例如,如果我想做一些http脚本,我不会直接使用java语法来调用Commons HttpClient吗?对我而言,脚本语言的意义在于快速键入和强制构造 . 这是另一回事,似乎没有任何动机可以开发基于groovy的库,因为已经有这么多优秀的Java,因此使groovy看起来是一种具有次要脚本功能的Java依赖语言 .
所以现在我想知道我是否可以转换为Groovy作为脚本语言或继续使用更常见的脚本语言,如Perl,Python或Ruby .
6 回答
@Zombies,让我向您展示我最近写的一个脚本的快速示例:
它使用commons-net API,但我认为你会同意它比同类Java程序有更清晰的语法 . 因此,我不认为使用Java API会破坏使用脚本语言的目的 . 此外,它可以帮助您利用Java API的现有知识,因此是一种非常实用的方法 .
Groovy的一个目标是与Java实现透明的互操作性 . Groovy是设计“具有脚本功能的Java依赖语言” . 但是,我不认为这些功能很小 - Groovy有许多静态编程语言(如Java)中没有的功能 .
总结一下:如果您根本不关心Java,那么请使用更通用的脚本语言,例如Python或Perl . 如果您想以脚本方式使用Java代码库,Groovy是一个不错的选择 .
Groovy可以非常方便地编写脚本 . 最近我需要一个脚本来将Maven依赖项提取到
lib
目录中,最后得到一个groovy脚本 . 这个片段解析一个pom并给你一个 jar 列表 . 非常适合XML解析!你将是"right back at using Commons HttpClient",但你会使用Groovy语法而不是Java语法来调用它 . Groovy语法比Java语法更紧凑,因此更适合脚本编写 . 换句话说,使用Groovy中的Java库比使用Java中的Java库需要的代码少得多 .
Groovy库作者不是开发一个全新的库,而是经常为现有的Java库提供"Groovier" API . 示例包括Grails提供的Hibernate构建器和HTTP Builder(委托给Commons HttpClient) .
这些Groovy API提供了直接使用Java API的更紧凑和惯用的替代方法 .
Groovy“开箱即用”用更长的版本或语言结构替换了大量的公共类,包括XML,HTTP请求,访问SQL数据库和正则表达式的类 . 对于大多数脚本任务,您根本不必使用Java库(尽管您仍然可以使用该选项) . 但是如果你的脚本使用裸Java库,那么使用Groovy比直接Java要远得多 . Groovy闪耀的地方是“胶水”代码,例如设置数据结构和文件I / O.
Map 和列表允许您创建Java兼容的列表和 Map ;与Java类一起使用的常规Java对象 . Groovy经常将具有变量声明和初始化的多行Java方法调用转换为单行 .
考虑这个简短的片段将整个文件加载到String中:
与
在脚本中,异常处理通常不是一个重要的考虑因素,可以方便地忽略它 .
Groovy作为脚本语言的主要优势是访问庞大的Java代码库在那里直接方便 . 如果这不是您的需要,groovy仍然提供与其他语言(如perl,python或ruby)一样丰富的脚本环境 .
Groovy的岩石,一旦你掌握了非常严格的语法,你就会开始使用它来完成很多你刚刚做过的“缓慢的方式” .
有一天,我正在进行一次讨论,不知道我们在一个系统的GUID中有多少个字符 . 而不是仅仅计算数字,这样做更容易:
在本地或共享脚本目录中发现它将会存在于未来 .