11.1 安装Groovy
相比于本书前面介绍的其他语言,Groovy的安装方式没有什么不同。使用你喜欢的浏览器,访问Groovy主页(http://groovy-lang.org):

安装步骤如下。
- 在主页中找到Download部分。
- 单击显眼的Download按钮,这将下载一个ZIP文件。编写本书期间,这个文件名为apache-groovy-sdk-2.4.10.zip。
- 将这个文件解压缩到方便的地方,再将其中的bin目录添加到环境变量
Path中。
Groovy自带了两种REPL环境:基于GUI的GroovyConsole和基于文本的GroovyShell。下面来检查安装情况:启动GUI应用程序GroovyConsole。按前面的指示将目录bin添加到环境变量Path中后,启动命令提示符(Windows)或终端(macOS和Linux),再执行如下命令:
GroovyConsole
这将启动GroovyConsole。这个程序适合运行小型Groovy脚本,本章都将使用它。
GroovyConsole和GroovyShell
前面说过,Groovy自带了两种REPL环境:
- GroovyConsole(桌面GUI应用程序);
- GroovyShell(基于文本的shell)。
它们都可用来尝试运行本章的代码片段。
- GroovyConsole
GroovyConsole是一个易于使用的桌面GUI应用程序,可用来交互式地编写和执行Groovy代码。这里只介绍其最常用的功能,但需要指出的是,它也提供了一些供高级用户使用的复杂功能。为启动GroovyConsole,请在命令提示符或终端窗口(macOS和Linux)中运行前述启动脚本:

在窗口的上半部分可输入代码,而下半部分显示输出和其他相关的信息。
在很大程度上说,Groovy与Java语法兼容,因此在GroovyConsole和GroovyShell中,可输入大多数Java语句。但也存在一些不兼容的情况,这将在下一章介绍。
下面来尝试输入一段代码。为此,在窗口的上半部分输入如下代码:
def random = new Random()random.nextInt(10)
按Ctrl + R(在macOS中为cmd + R),或在工具栏中找到并单击工具提示为“Execute Groovy Script”的按钮。

在窗口的下半部分,将打印被执行的代码,并最终打印一个位于0~9之间的数字。GroovyConsole总是打印最后评估的值。运行这个脚本多次,你将发现每次都在之前的输出后面显示新输出。
GroovyConsole有很多定制选项,下表介绍了菜单View中一些较常用的选项。
菜单View中的选项描述 Clear output清空输出窗口,在Windows和Linux中的快捷键为Ctrl + W,在macOS中的快捷键为cmd + W Auto Clear Output On Run被选中时,将在运行脚本时自动清空输出窗口;默认未选中 Show Script in Output被选中时(默认被选中),将把脚本的代码打印到输出窗口 Show Full Stack Traces被选中时(默认被选中),如果引发了异常,将在输出窗口中打印完整的栈跟踪。如果未选中,将只显示栈跟踪的最后一个条目 Detach output被选中时(默认为未选中),将在不同的窗口中显示输入和输出
其他一些值得注意的功能如下。
- 通过按Ctrl + /(在macOS中为cmd + /),可取消对当前行或选定行的注释。
- 可将目录和/或JAR文件添加到类路径中,为此可选择菜单Script>Add Jar (s) to the ClassPath或Add Directory to the ClassPath。在你需要动态地探索外部库或工具包的API时,这项功能提供了极大的便利。
- 可保存和加载包含Groovy代码的脚本,为此可选择菜单File>Open或File>Save。
- GroovyShell
GroovyShell是更传统的基于文本的REPL shell,类似于本书前面介绍的Scala、Clojure和Kotlin的REPL。要启动它,可运行子目录bin中的启动脚本groovysh:

在这个shell中,命令大都以冒号(:)打头。要获取可用的命令列表,可执行命令:help,也可使用快捷方式?。还可使用:help或?来获取特定命令的更详细信息。例如,要获取命令:show的更多信息,可执行命令? :show。要测试命令:show,可依次执行如下命令:
i = 40j = i + 2:show variables
这将显示所有的变量及其值。其中的_表示最后计算得到的值,这里为42。
要退出GroovyShell,可执行命令:exit或:quit(这两个命令都行,这是典型的Groovy风格)。
