Skriptsprache Groovy#
Groovy ist eine Skriptsprache,
- deren Syntax an Java angelehnt ist und
- die in einer Java VM läuft, d.h. Groovy wird in Java-Bytecode kompiliert.
Update am 09.01.2007: Groovy in der Version 1.0 steht zum Download bereit. Quelle: Heise --MarkusMonderkamp
Integration in Eclipse#
Ich starte, indem ich mir das passende Plugin in meine EclipseIDE installiere. Dazu trage ich den Link http://dist.codehaus.org/groovy/distributions/update/ als Update Site ein.
Dann lege ich ein neues Java-Projekt an und füge die Groovy-Nature hinzu. Das geht über den entsprechenden Eintrag im Rechte-Maustaste-Menü zum neu angelegten Projekt.
Erste Schritte#
Zunächst versuche ich einige der Feature von Groovy aufzuprobieren.
Einbaute Syntax für Listen, Maps etc.#
list = ["Peter", "Paul", "Mary"] list.each { println it }
map = [id:1, name:"Peter", age:44] println "Peter's name: " + map["name"] println map.name + "'s age is " + map.age println "${map.name}'s age is $map.age"
Closures#
Closures sind Code-Stücke, die man Variablen zuweisen kann. Closures können als Parameter übergeben werden und stellen so ein sehr mächtiges Werkzeug dar, um Funktionen sehr universell zu programmieren.
closure = { text -> println "Der Text ist: $text" } list = ["Peter", "Paul", "Mary"] list.each { closure(it) }
Reguläre Ausdrücke#
Die Sprache Groovy verfügt über eine Syntax für reguläre Ausdrücke entsprechend dem java.regexp-Package.
Der binäre Operator ==~ erwartet Links einen String und rechts einen regulären Ausdruck. Das Ergebnis ist true, wenn der String den Ausdruck matched.
if ("potato" ==~ /potatoe?/) println "Ok!" if ("potatoe" ==~ /potatoe?/) println "Ok!" if ("potatoo" ==~ /potatoe?/) println "Ok!"
Der binäre Operator =~ erwartet ebenfalls String und regulären Ausdruck als Parameter, er liefert jedoch einen Matcher. Aus dem Matcher lassen sich dann Variablen extrahieren, die Klammer-Teilausdrücke im regulären Ausdruck matchen.
def text = "Schulze, Hans-Georg, Cologne\nMeier-Ebert, Hans-Gustav, Essen\nKlugewas, Hermann, Berlin\n" def matches = text =~ /([^,]*), ([^,]*), ([^\n]*)\n?/ for (i in 0..matches.groupCount()-1) { m = matches[i] println "${m[1]} ${m[2]} lives in ${m[3]}" }
Weitergehende Funktionen#
SQL#
import groovy.sql.Sql; sql = Sql.newInstance("jdbc:mysql://localhost:3306/test", "test", "geheim", "com.mysql.jdbc.Driver"); res = sql.eachRow( "select * from person where age > 25", { println "$it.surname is $it.age years old" } )
GroovyWebstart#
Machbarkeitsstudie für Java-Webstart einer Groovy-Anwendung: GroovyWebstart
Links#
- Groovy Homepage
- GRails ist das Groovy-Web-Framework