groovy Tutorial
Erste Schritte mit Groovy
Suche…
Bemerkungen
Groovy ist
ist eine optional typisierte dynamische Sprache für die Java Virtual Machine
baut auf den Stärken von Java auf, verfügt jedoch über zusätzliche Leistungsmerkmale, die von Sprachen wie Python, Ruby und Smalltalk inspiriert sind
stellt Java-Entwicklern moderne Programmierfunktionen mit einer Lernkurve von nahezu Null zur Verfügung
bietet die Möglichkeit, Ihren Code statisch zu prüfen und statisch zu kompilieren, um Robustheit und Leistung zu gewährleisten
Unterstützt domänenspezifische Sprachen und andere kompakte Syntax, sodass Ihr Code einfach gelesen und verwaltet werden kann
Das Schreiben von Shell- und Build-Skripts mit seinen leistungsstarken Verarbeitungsfunktionen, OO-Fähigkeiten und einem Ant-DSL vereinfacht das Schreiben
Steigert die Entwicklerproduktivität durch Reduzierung des Scaffolding-Codes bei der Entwicklung von Web-, GUI-, Datenbank- oder Konsolenanwendungen
vereinfacht das Testen, indem es Unit-Tests unterstützt und sofort einsatzbereit macht
nahtlos in alle vorhandenen Java-Klassen und -Bibliotheken integrierbar
kompiliert direkt in Java-Bytecode, sodass Sie ihn überall verwenden können, wo Sie Java verwenden
Versionen
Ausführung | Versionshinweise | Veröffentlichungsdatum |
---|---|---|
2.4 | http://groovy-lang.org/releasenotes/groovy-2.4.html | 2015-01-21 |
2.3 | http://groovy-lang.org/releasenotes/groovy-2.3.html | 2014-05-05 |
2.2 | http://groovy-lang.org/releasenotes/groovy-2.2.html | 2013-11-18 |
2.1 | http://groovy-lang.org/releasenotes/groovy-2.1.html | 2013-01-24 |
2,0 | http://groovy-lang.org/releasenotes/groovy-2.0.html | 2012-06-28 |
1.8 | http://groovy-lang.org/releasenotes/groovy-1.8.html | 2011-04-27 |
1.7 | http://groovy-lang.org/releasenotes/groovy-1.7.html | 2009-12-22 |
1.6 | http://groovy-lang.org/releasenotes/groovy-1.6.html | 2009-02-18 |
1,5 | http://groovy-lang.org/releasenotes/groovy-1.5.html | 2007-12-07 |
1,0 | 2007-01-02 |
Installation oder Setup
Groovy kann auf zwei Arten installiert werden.
Herunterladen
Die Groovy-Binärdatei kann auf der Download- Seite der Groovy-Website heruntergeladen werden. Sie können das Archiv entpacken und den Pfad zu %GROOVY_HOME%/bin/groovy.bat
der Systemumgebungsvariablen PATH hinzufügen, wobei% GROOVY_HOME% das Verzeichnis ist, in dem Groovy entpackt wird.
SDKMAN
Die andere Option ist die Verwendung von SDKMAN . Diese Option hat schnell an Popularität gewonnen und macht die Verwaltung mehrerer Versionen von Groovy sehr einfach. Es unterstützt auch andere Anwendungen in der Ökosphäre "GR8". Diese Option funktioniert nativ auf Linux und Mac sehr gut, erfordert aber Cygwin unter Windows.
Befolgen Sie die Anweisungen auf der Download-Seite "Groovy" , um SDKMAN zu installieren.
$ curl -s get.sdkman.io | bash
Nach der Installation von SDKMAN haben Sie nun Zugriff auf den Befehl sdk
. Mit diesem Befehl können Sie viele nützliche Dinge tun.
Installieren Sie Groovy
$ sdk install groovy
Dadurch wird die neueste Version von Groovy installiert.
Listet Versionen von Groovy auf
$ sdk ls groovy
Auf diese Weise können Sie einen Linux-Style-Befehl ls
in der Groovy-Software ausführen und alle verfügbaren Optionen auflisten. Neben jeder installierten Version gibt es ein *
und ein >
, um Ihre aktuellen Versionen anzuzeigen.
Wechseln Sie die Versionen von Groovy
$ sdk use groovy 2.4.7
Dadurch wird die aktuelle Version von Groovy in 2.4.7 geändert. Wenn Sie andere Versionen installiert haben, können Sie zu jeder Version wechseln.
Sie können die aktuelle Version von groovy mit dem Befehl groovy -version
.
posh-gvm
Der ursprüngliche Name von SDKMAN war GVM und posh-gvm ist eine Portierung von GVM für Windows Powershell. Wenn Sie also auf einem Windows-Computer entwickeln und SDKMAN nicht für Cygwin verwenden möchten, ist posh-gvm genau das Richtige für Sie. Es funktioniert genauso wie SDKMAN, aber anstelle von sdk
ist der Befehl gmv
. So
PS C:\Users\You> gmv install groovy
wird durch posh-gvm auf Ihrem Windows-Rechner installiert.
Hallo Welt
Die Groovy-Version von Hello World.
println 'Hello World!'
Hallo Welt In Groovy
Das folgende Beispiel veranschaulicht das einfachste Hello World
in groovy using script. helloWorld.groovy
den folgenden Code-Ausschnitt in eine Datei ein, helloWorld.groovy
println 'Hello World!'
Wie auszuführen: In der Kommandozeile groovy helloWorld.groovy
Ausgabe: Hello World!
Groovy in einem Java-Projekt verwenden
Groovy hat Zugriff auf alle Java-Klassen. Groovy-Klassen sind Java-Klassen und können von der JVM direkt ausgeführt werden. Wenn Sie an einem Java-Projekt arbeiten, ist die Verwendung von Groovy als einfache Skriptsprache für die Interaktion mit Ihrem Java-Code ein Kinderspiel.
Um die Dinge noch besser zu machen, kann fast jede Java-Klasse in .groovy umbenannt, kompiliert und ausgeführt werden und funktioniert genauso wie Groove. Es ist fast ein Super-Set von Java.
Groovy hat eine REPL. groovysh
wird mit Groovy groovysh
und kann verwendet werden, um eine Java-Klasse schnell zu instanziieren und zu testen, wenn der Klassenpfad richtig eingerichtet ist. Wenn zum Beispiel Ihr classpath
auf Ihr Eclipse-Verzeichnis "classes / bin" zeigte, könnten Sie Ihre Datei in Eclipse speichern, zu groovysh
springen und die Klasse zum Testen instanziieren.
Die Gründe, Groovy anstelle von Java zu verwenden, sind: Der Classloader kann GRÖSSE beim Abholen neuer Klassen verwenden, wenn sie kompiliert werden. Sie müssen groovysh
im Allgemeinen nicht groovysh
Entwicklung groovysh
/ neu starten.
Die Syntax lautet TERSE. Dies ist nicht besonders gut für wartbaren Code, aber für Skripts und Tests kann der Code erheblich reduziert werden. Es ist eine der großen Aufgaben, die markierte Ausnahmen zu beseitigen (oder genauer gesagt, alle geprüften Ausnahmen in ungeprüfte Ausnahmen umzuwandeln). Dies ändert den Code wie folgt (Hallo Druck nach einer Sekunde):
class JavaClass {
public static void main(String[] args) {
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
// You shouldn't leave an empty catch block, but who cares if this was interrupted???
}
System.out.println("Hello!");
}
}
in Groovys:
Thread.sleep(1000)
print "Hello!"
Groovy hat auch eine sehr enge Initialisierungssyntax. Auf diese Weise können Sie die Daten nach Ihren Wünschen angeben, ohne darüber nachzudenken:
Um in Java eine Karte zu initialisieren, sollten Sie wahrscheinlich Folgendes tun:
String[] init = { "1:Bill", "2:Doug", "3:Bev" };
// Note the rest of this can be put in a function and reused or maybe found in a library, but I always seem to have to write this function!
Map m = new HashMap<Integer, String>();
for(String pair : int) {
String[] split = pair.split(":");
m.put(new Integer(split[0]), split[1])
}
Das ist nicht schlecht, aber es ist etwas anderes, das man beibehalten muss. In Groovy würden Sie einfach Folgendes verwenden:
Map map = { 1 : "Bill", 2 : "Doug", 3 : "Bev" }
Und du bist fertig. Listensyntax ist genauso einfach.
Der andere wirklich große Vorteil ist die Verschlußsyntax von Groovy. Es ist erstaunlich knapp und macht Spaß, es ist etwas schwieriger zu warten, aber für Skripts ist das keine Priorität. Als Beispiel ist hier ein grooviger Code zum Suchen aller .txt
Dateien, die das Wort " Hello
im aktuellen Verzeichnis enthalten:
println new File('.').files.findAll{ it.name.endsWith('.txt') && it.text.contains('Hello') }.collect{ it.name }
In diesem Beispiel werden einige "Groovy" -Tricks verwendet:
.files
bezieht sich auf diegetFiles()
-Methode - groovy kann nachgetFiles()
zwischen getter / setter und Eigenschaftssyntax wechselnit.
bezieht sich auf das aktuelle Element einer Iteration.{ it }
ist eine Abkürzung für{ it -> it }
, zB:[1, 2, 3] .sammlung {it ^ 2} == [1, 4, 9]
it.text
(woit
ist eine Datei) verwendet eine Methode , groovy fügtFile
den gesamten Text der Datei abzurufen. Dies ist in Skripten erstaunlich hilfreich.
Hallo Welt Shebang (Linux)
Gegeben eine hallo.groovy Datei mit Inhalt:
#!/usr/bin/env groovy
println "Hello world"
Kann von der Befehlszeile aus ausgeführt werden, wenn die Ausführungsberechtigung als gegeben ist
$ ./hello.groovy
Verwenden von inject () für die Liste zum Erstellen einer CSV-Zeichenfolge
In Groovy ist die inject () -Methode eine der kumulativen Methoden, die es uns ermöglicht, neue Funktionalität zu jedem Objekt hinzuzufügen (oder einzufügen), das die inject () -Methode implementiert. Im Falle einer Collection können wir einen einheitlichen Abschluss für eine Collection von Objekten anwenden und die Ergebnisse dann zu einem einzigen Wert zusammenfassen. Der erste Parameter der inject () - Methode ist der Anfangswert der Kumulierung und der zweite Parameter ist der Abschluss.
In diesem Beispiel nehmen wir eine Liste von Strings als Parameter und geben die Werte dieser durch Kommas getrennten Strings aus. Ich habe diese Funktionalität verwendet, um eine Liste von Werten an eine REST-Abfragezeichenfolge anzuhängen. Wenn Sie sie etwas ändern, habe ich sie verwendet, um Werte als Teil einer IN-Klausel in eine SQL-Anweisung aufzunehmen. Hier ist der Code dafür:
public String convertToCSV( List<String> list ) {
if (list == null) {
return ""
}
return list.inject( '' ) { result, item ->
result + ( result && item ? ',' : '' ) + ( item ? "${item.trim()}" : '' )
}
}
assert convertToCSV( null ) == ""
assert convertToCSV( ["aaa", "bbb ", null, " ccc "] ) == "aaa,bbb,ccc"
In diesem Beispiel ist der erste Parameter für die inject () - Methode eine Zeichenfolge mit der Länge Null. Dies bedeutet, dass das Ergebnis bei der Verarbeitung des ersten Elements der Liste auch eine Zeichenfolge mit der Länge Null ist. Dies wird in der ersten ternären Bewertung zu falsch aufgelöst, weshalb wir am Anfang der Zeichenfolge kein Komma erhalten. Bei jeder nachfolgenden Iteration durch die Elemente der Liste wird das Ergebnis zur Verkettung von sich selbst, einem Komma und dann zum nächsten Element, bis wir das letzte Element in der Liste erreichen.
Der Vorteil dieser Methode ist, dass Sie keine Variable außerhalb eines Schleifenkonstrukts benötigen, um das Ergebnis der verketteten Zeichenfolge zu speichern. Dies bedeutet, dass dies zu Nebenwirkungen im Code führen kann. Mit dem inject () -Ansatz wird dieses Verhalten injiziert und die Sammlung sammelt das Ergebnis der Aufrufe für die Schließung für Sie. Der Nachteil dieses Ansatzes kann die Lesbarkeit sein. Mit etwas Erfahrung wird es jedoch einfacher zu lesen und zu verstehen, und ich hoffe, dieses Beispiel hilft Ihnen dabei, dieses Ziel zu erreichen.