3.3.色々な実行方法

Groovyのプログラムを実行するために、以下の4つの方法があります。

  • GroovyConsole
  • Groovysh
  • ファイルに保存してスクリプトとして実行
  • ファイルに保存してコンパイル&実行

以下それぞれ説明していきます。
なお、このチュートリアルでは特に注釈のない限り、プログラムの実行は GroovyConsole を想定します。

3.3.1.GroovyConsole

さっきHelloWorldで使いましたね!

3.3.2.Groovysh

コンソールを開いてgroovyshと実行します。
すると、1行ずつGroovyのコードを実行することができる、いわゆる REPL が起動します。 簡単なコードなどはこのgroovyshで確認するのがオススメです。

3.3.3.ファイルに保存してスクリプトとして実行

難しいことは何一つありません。
適当なディレクトリで、 hoge.groovy という名前でファイルを作成しましょう。
そのファイルの中に以下を記述します。

println "Hello Groovy"
println 1 + 1

ファイルを保存したら、ターミナルを起動して、そのファイルがある場所まで移動して、以下のコマンドを実行します。
groovy hoge.groovy するとターミナルに実行結果が以下のように表示されます。

Hello Groovy
2

3.3.4.ファイルに保存してコンパイル&実行

Javaのように一度classファイルにコンパイルしてから実行することが可能です。
Groovyをコンパイルするコマンドはgroovycです。
先ほどのhoge.groovyで試してみましょう。

groovyc hoge.groovy

すると、 hoge.class というファイルが生成されますね。
ここで先ほどのgroovyコマンドを実行してみましょう。
なお、Javaと同様コンパイルされたclassファイルを実行する際には、 .class は省略します。

groovy hoge

先ほどの「ファイルに保存してスクリプトとして実行」と同様以下のような実行結果が表示されますね。

Hello Groovy
2

実は、groovyコマンドでコンパイルせずにgroovyファイルを実行すると、この groovycコマンドによるコンパイルgroovyコマンドによるclassファイルの実行 をGroovyが同時に行ってくれています。

3.3.4.1.ファイル名と生成されるclassファイル名の関係

少し余談になりますが、今回 hoge.groovyというファイルをgroovycコマンドで実行すると hoge.classというclassファイルが生成されました。
では、一旦 hoge.groovyhoge.class を削除してください。
その上で再度 hoge.groovy を作成して、以下の内容を記述してください。

class Foo{
    static main(args) {
        println "This is Foo class in hoge.groovy"
    }
}

詳細は後の章で述べますが、これはGroovyに置ける普通のクラスを宣言になります。
ではgroovycコマンドでコンパイルしてみましょう。

groovyc hoge.groovy

実行してみると Foo.class というファイルが生成されています。
先ほどは hoge.class というファイルが作成されましたよね。。。?これはどういうことでしょう?
では、またまた両方のファイルを削除して、再度 hoge.groovy を作成して、以下の内容を記述してください。

class Foo{
    static main(args) {
        println "This is Foo class in hoge.groovy"
    }
}

println "Out of Foo"

これをgroovyc hoge.groovyでコンパイルすると Foo.classhoge.class という2つのclassファイルが出来上がりました。
このことから、クラスとして宣言されている部分はそのクラス名.class、クラスの外側に記述されている部分はそのファイル名.classというファイル名になることがわかります。