Groovy: Interaktiv arbeiten

Wir möchten Sie hier mit zwei Möglichkeiten bekannt machen, Groovy-Skripte und -Programme laufen zu lassen, die eher zum Ausprobieren und Experimentieren als für die eigentliche Software-Entwicklung geeignet sind: die beiden Dienstprogramme groovysh und groovyConsole. Beide ermöglichen es, Groovy-Code einzugeben, ihn auszuführen und das Ergebnis zu betrachten. Daneben gibt es noch die Möglichkeit, Groovy im Server-Modus zu betreiben und Skripte über das Netzwerk ausführen zu lassen.

Eine vollständige Referenz der verschiedenen Tool-Optionen finden Sie im Anhang Groovy-Tools.

Die Groovy-Shell (groovysh) Bearbeiten

Dieses Tool ähnelt einer interaktiven Shell, Sie können Anweisungen eingeben und sie unmittelbar ausführen lassen. Sie werden gleich sehen, dass diese Ähnlichkeit nicht sehr vollkommen ist. Sie starten es durch Eingabe des Befehls groovysh in der Konsole (bei Windows können Sie auch aus Start→Ausführen klicken und dann den Namen des Befehls eingeben).

Das Programm meldet sich mit einer Begrüßung und fordert Sie auf, eine Skriptzeile einzugeben. Sie können nun ein sich über mehrere Zeilen erstreckendes Skript tippen, die Sie jeweils mit der Return-Taste abschließen.

Ausgeführt wird das Skript, sobald Sie eine vollständige Groovy-Anweisung eingegeben haben (oder etwas, was Groovy als vollständige Anweisung ansieht). Bei einem Skript mit mehreren Anweisungen müssen Sie also darauf achten, dass immer eine Klammer oder ein Ausdruck offen ist, bis das komplette Skript eingegeben ist. Danach sehen Sie die möglicherweise in Ihrem Skript enthaltene Ausgabetexte und zum Abschluss das Ergebnis des letzten Befehls bzw. ===> null, wenn der letzte Befehl des Skripts kein Ergebnis hat.

> groovysh
Groovy Shell (1.7.0, JVM: 1.6.0_10)
Type 'help' or '\h' for help.
-------------------------------------------------------
groovy:000> for ( p in System.properties.sort { x,y->x.key<=>y.key } ) {
groovy:001>     if (p.key.startsWith('user')) println p
groovy:002> }
user.country=DE
user.dir=C:\Users\jst
user.home=C:\Users\jst
user.language=de
user.name=jst
user.timezone=
user.variant=
===> null
groovy:000>

Die Groovy-Shell eignet sich besonders gut für kurze Berechnungen in der Art eines Taschenrechners, zum Beispiel so:

groovy:000> a=10
===> 10
groovy:000> b=11
===> 11
groovy:000> c=2
===> 2
groovy:000> (a+b)*c
===> 42

Beachten Sie: den Variablen a, b und c weisen wir hier Werte zu, ohne sie vorher zu definieren. Das ist nur außerhalb einer Klassendefinition möglich und hat zur Folge, dass sie Werte in dem sogenannten Binding gespeichert werden, einem Map-artigen Behälter, den die Groovy-Shell von einem Skript-Aufruf zum nächsten weiter reicht.

Den aktuellen Inhalt des Bindings können Sie sich mit dem Befehl show variables anzeigen lassen. Es gibt einige weitere Befehle, die Sie sich mit dem Befehl help ansehen können. Beenden Sie Ihre Groovy-Session mit exit oder schließen Sie einfach das Konsolenfenster.

groovy> show variables
a=10
this$dist$invoke$4=org.codehaus.groovy.runtime.MethodClosure@91f0de
this$dist$set$4=org.codehaus.groovy.runtime.MethodClosure@15c929a
this$dist$get$4=org.codehaus.groovy.runtime.MethodClosure@9cd8db
_={a=10, this$dist$invoke$4=org.codehaus.groovy.runtime.MethodClosure@91f0de, 
this$dist$set$4=org.codehaus.groovy.runtime.MethodClosure@15c929a, 
this$dist$get$4=org.codehaus.groovy.runtime.MethodClosure@9cd8db, _=(this Map), b=11, c=2}
b=11
c=2
===> {a=10, this$dist$invoke$4=org.codehaus.groovy.runtime.MethodClosure@191777e, 
this$dist$set$4=org.codehaus.groovy.runtime.MethodClosure@13c2d7f, 
this$dist$get$4=org.codehaus.groovy.runtime.MethodClosure@1cefde4, _=(this Map), b=11, c=2}
groovy> exit

Die Groovy-Konsole (groovyConsole) Bearbeiten

 
Die Groovy-Konsole

Während groovysh zumindest gegenwärtig doch ein sehr rudimentäres Werkzeug ist, bietet die groovyConsole mit ihrer grafischen Oberfläche zumindest ein Mindestmaß an Komfort. Nach der Eingabe dieses Befehls öffnet sich ein Anwendungsfenster mit zwei untereinander angeordneten Textbereichen. Im obigen können Sie ein beliebig langes Groovy-Skript eingeben. Wenn Sie es mit der Menüanwahl Actions->Run oder Strg-R starten, erscheinen im unteren Textbereich die Skripteingabe, wie sie in groovysh aussehen würde, eventuelle Ausgaben des Skripts sowie zum Abschluss auch wieder das Ergebnis des zuletzt ausgeführten Skriptbefehls.

Die Groovy-Konsole verfügt noch über einige weitere Möglichkeiten, beispielsweise zum Laden und Speichern von Dateien, die sich leicht aus dem Menü erschließen lassen.

Aktuell: Die Groovy-Konsole ist in der Zwischenzeit stark verbessert worden. So verfügt sie beispielsweise über einfaches Syntax-Highlighting, Auskunftsfunktionen zum aktuellen Skript und Möglichkeiten für eine elaborierte Darstellung von Ergebnissen.

Das Skript als Aufrufoption (groovy -e) Bearbeiten

Wenn Sie es ganz eilig haben und Ihr Programm nur aus einem oder wenigen Anweisungen besteht, was man in Groovy leicht hinbekommt, können Sie sich auch das Starten von groovysh oder groovyConsole ersparen. Rufen Sie einfach im Befehlszeilenfenster den Befehl groovy so auf, dass Sie nicht den Namen einer auszuführenden Datei sondern mit der Option -e die Anweisungen selbst als Aufrufargument angeben.

> groovy –e "for (p in System.properties) println p"
java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition
sun.boot.library.path=C:\Programme\Java\jdk1.5.0_06\jre\bin
...

Schneller kriegen Sie es wohl kaum hin, sich eben einmal alle System-Properties der Java-Laufzeitumgebung ausgeben zu lassen. Aber warten Sie ab, wenn Sie erst etwas vertrauter mit den Stärken von Groovy sind, wird Ihnen vielleicht auch so mancher Einzeiler einfallen, der ihnen das Leben erleichtert.