Einleitung


 ... [ Groovy - Titelseite ] ... [ << Inhalt ] ... [ Einfache Elemente >> ] ...  



Was ist Groovy?

Groovy ist eine junge Skriptsprache für die Java Virtual Machine. Mit Groovy ist es möglich in einer Java-ähnlichen Syntax zu skripten, ohne auf die Java-Klassenbibliotheken zu verzichten. Zusätzlich bietet Groovy viele Elemente aus anderen Skriptsprachen wie Python. Eines der Hauptziele von Groovy ist es, Vereinfachungen für den Programmierer zu bieten, welche die Entwicklungszeit im Gegensatz zu Java verkürzen sollen.
[ nach oben ]  


Installation

Um in Groovy zu programmieren benötigt man lediglich Java. Das Groovy-Archiv enthält im Wesentlichen eine Jar-Datei, welche man zum CLASSPATH hinzufügen muss. Außerdem müssen noch einige Umgebungsvariablen angepasst werden. Groovy benötigt Java in der Version 1.4 oder höher.

Alle Beispiele und Aussagen beziehen sich auf die folgende Groovy Version: 1.0-jsr-05 JVM: 1.5.0_05-51. Es ist davon auszugehen, dass sich die Semantik in einigen Punkten noch ändern wird. Mittlerweile gibt es neuere Versionen, deren Nutzung empfehlenswert ist.

[ nach oben ]  


Kompilierung

Es ist möglich Groovy-Code zu interpretieren oder zu kompilieren. Beim Kompilieren werden durch das Kommando groovyc FILENAME eine Java 1.4-konforme Datei FILENAME.class erzeugt. Es ist dann möglich die darin enthaltene Klasse aus Java-Code zu nutzen oder, falls es sich um ein ausführebares Skript handelt, direkt mit java FILENAME auszuführen.
[ nach oben ]  


Interpretation

Groovy wäre aber keine Skriptsprache, wenn man den Quellcode nicht direkt ausführen könnte. Dies ist mit dem Kommando groovy möglich. Intern geschieht dabei das gleiche wie beim Kompilieren: Der Quellcode wird also in Bytecode übersetzt, welcher sofort ausgeführt wird.

Um einige wenige Anweisungen auszuführen, kann das Programm groovysh verwendet werden, welches zur interaktiven Eingabe von Quellcode auffordert. Dabei muss jede Eingabe mit der Zeile go abgeschickt werden.

[ nach oben ]  


Hello World

Als erste Annäherung kann man behaupten, jede gültige Java-Datei läuft auch mit Groovy. Zumindest für das klassische Hello-World Programm gilt dies:
class Hello 
{
    public static void main(String[] args) {
        System.out.println("hello world in java");        
    }
}
Den selben Effekt erhält man mit Groovy aber einfacher:
#!/usr/bin/env groovy
println "Hello World in groovy"
Das Beispiel zeigt, dass in Groovy nicht alles in einer Klasse verpackt werden muss. Globaler Code wird so behandelt, als ob er in einer main-Methode eine Unterklasse von Script stehen würde. Folgende Datei "DoubleMain" ist daher ungültig und führt zu einer Exception:
class DoubleMain{
    public static void main(String[] args) {
        println "echo"
    }
}
println "foo"

Parameter können entweder im Java-Stil, das heisst mit runden Klammern und getrennt mit Kommata, oder im Groovy-Stil ohne Klammern und durch Leerzeichen getrennt angegeben werden. Auf die Kommandozeilenargumente kann man immer mit args zugreifen, auch ohne Main-Klasse:
int i = 1;
for(p in args) {
    println "${i}-tes argument: $p"
    i++;
}
[ nach oben ]  


Kurzer Vergleich mit Java

  • Semikolons sind optional. Ein Zeilenumbruch dient unter Umständen als Trennzeichen von Anweisungen.
  • Das return-Schlüsselwort ist optional. Der Rückgabewert ergibt sich aus dem Wert der letzten Anweisung.
  • Typisierung (die Angabe von Typen) ist optional. Das Weglassen entspricht der Angabe von Object als Typ.
  • Runde Klammern für den Funktionsaufruf sind optional.
  • Exceptions müssen nicht abgefangen werden; Das throws-Schlüsselwort ist somit unnötig.
  • In der ersten Zeile eines Skripts ist die Shebang-Zeile erlaubt, zum Beispiel so: #!/bin/groovy oder etwas allgemeiner: #!/usr/bin/env groovy
  • Assertions sind standardmäßig aktiviert und können somit als einfache Unit-Tests verwendet werden.
  • Beim Importieren können Klassen für die aktuelle Quelldatei umbenannt werden: import java.util.Map as M;
[ nach oben ]  



 ... [ Groovy - Titelseite ] ... [ << Inhalt ] ... [ Einfache Elemente >> ] ... [ nach oben ] ...