Groovy Scripttutorial for begyndere
⚡ Smart opsummering
Groovy Script er et objektorienteret sprog til Java platform, der kompilerer til JVM bytecode. Den tilføjer dynamisk typing, lukninger og præcis syntaks til Java, og den giver magt Jenkins rørledninger, Gradle bygger, og SoapUI påstande.

Hvad er en Groovy Manuskript?
Apache Groovy er objektorienteret, Java syntaks-kompatibelt programmeringssprog bygget til Java platform. Dette dynamiske sprog har mange funktioner, der ligner Python, Ruby, Smalltalk og Perl. Groovy kildekoden er kompileret til Java bytecode, så den kører på enhver platform, hvor en Java Virtuel maskine er installeret. Groovy udfører også en masse arbejde bag kulisserne, hvilket får det til at føles mere adræt og dynamisk end almindeligt Java.
A Groovy script er simpelthen en .groovy fil, der indeholder udsagn, der Groovy ombryder en genereret klasse, før den køres. Derfor kan du udføre en fil på én linje uden at skrive en klasse eller en main fremgangsmåde. Groovy kan derfor bruges som scriptsprog til Java platformen, samtidig med at den tilbyder virksomhedens funktioner JavaDen tilføjer produktivitetsfunktioner såsom DSL-understøttelse, lukninger og valgfri dynamisk typingI modsætning til nogle andre sprog er det designet som en ledsager til Java, ikke en erstatning for den.
💡 Tip: Groovy 5.0 er den nuværende stabile udgivelseslinje og er rettet mod JDK 11 og nyere. Groovy 4.0 er stadig tilgængelig for JDK 8-projekter, og Groovy 6.0 er stadig i alpha-version til JDK 17. Tjek altid systemkravstabellen på den officielle downloadside, før du vælger en version.
Hvorfor Groovy?
Her er de vigtigste grunde til, at du bør bruge og lære Groovy:
- Groovy er et agilt og dynamisk sprog.
- Den integreres problemfrit med alle eksisterende Java objekter og biblioteker.
- Det føles nemt og naturligt at Java udviklere.
- Koden er mere præcis og mere meningsfuld end den tilsvarende Java kode.
- Du kan bruge den så meget eller så lidt, som du vil, indeni Java applikationer.
- Den kører på standarden Java Virtual Machine, så der kræves ingen separat kørselstid.
Groovy Historie
- 2003: Startet af James StracHan og Bob McWhirter.
- 2004: Indsendt til Java Fællesskabsprocessen som JSR 241, som senere blev trukket tilbage.
- 2005: Bragt tilbage på tracaf Jeremy Rayner og Guillaume Laforge.
- 2007: Groovy 1.0 udgivet.
- 2012: Groovy 2.0 udgivet.
- 2014: Groovy 2.3 udgivet med officiel understøttelse af JDK 8.
- 2015: Groovy blev et topniveauprojekt hos Apache Software Foundation.
- 2022: Groovy 4.0 udgivet, hvor Maven-koordinater flyttes til
org.apache.groovy. - 2025: Groovy 5.0 udgivet til JDK 11 og nyere.
Funktioner af Groovy
- Liste-, kort-, interval- og regulære udtryksliteraler.
- Multimetoder (kørselsmetodeafsendelse) og metaprogrammering.
- Groovy klasser og scripts gemmes normalt i
.groovyfiler. - Scripts indeholder Groovy erklæringer uden nogen klasseerklæring.
- Scripts kan også indeholde metodedefinitioner uden for klassedefinitioner.
- Groovy kode kan kompileres og fuldt integreres med en traditionel Java ansøgning.
- Understøttelse af kort, lister og regulære udtryk på sprogniveau.
- Understøttelse af lukninger, dynamisk typingog metaobjektprotokollen.
- Understøttelse af både statisk og dynamisk typing, plus overbelastning af operatøren.
- Valgfri statisk typekontrol via
@TypeCheckedog@CompileStaticanmærkninger.
Sådan installeres Groovy
Trin 1) Sørg for, at du har Java installeret.
Trin 2) Gå til https://groovy.apache.org/download.html og klik på Windows installationslink.
Bemærk: Du kan også installere Groovy fra den binære Zip-fil, via en pakkehåndtering som SDKMAN!, Homebrew, Scoop eller Chocolatey, eller som et plugin til din Java IDE. I denne Groovy gennemgang vi vil holde os til Windows installatør.
Trin 3) Start det downloadede installationsprogram. Vælg sproget, og klik på OK.
Trin 4) Klik på NÆSTE på velkomstskærmen.
Trin 5) Accepter licensvilkårene.
Trin 6) Vælg de komponenter, du vil installere, og klik på NÆSTE.
Trin 7) Vælg installationsmappen, og klik på NÆSTE.
Trin 8) Vælg mappen Startmenu, og klik på NÆSTE.
Trin 9) Når installationen er færdig, skal du lade stierne være som standard og klikke på NÆSTE.
Trin 10) Bekræft indstillingerne for filtilknytning, og klik på NÆSTE.
Trin 11) I Startmenuen skal du søge efter Groovy Konsol for at bekræfte installationen.
⚠️ Advarsel: Windows Installationsprogrammet er et artefakt bidraget af fællesskabet, ikke en officiel Apache-udgivelse. Hvis din organisation kræver signerede Apache-downloads, skal du bruge den binære Zip-distribution og verificere dens .asc underskrift og .sha256 checksum i stedet.
Groovy Hej verdenseksempel
Antag, at du vil udskrive den simple streng "Hello World" i JavaKoden ville se sådan ud.
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Output:
Hello World
Ovenstående kode er gyldig i begge Java og Groovy, Fordi Groovy accepterer næsten alle Java syntaks. Fordelen med Groovy er, at du kan fjerne klassedeklarationen, den offentlige metode og det fuldt kvalificerede print-kald og opnå det samme output med en enkelt linje.
println "Hello World"
Output:
Hello World
- Der er ikke behov for et semikolon.
- Der er ikke behov for en klasse eller en
mainfremgangsmåde. System.out.printlner reduceret tilprintln.
Groovy Variabler
In Java, statisk binding er obligatorisk, hvilket betyder, at typen af en variabel skal deklareres på forhånd.
public class Demo {
public static void main(String[] args) {
int x = 104;
System.out.println(x);
//x = "Guru99";
}
}
Output:
104
I eksemplet ovenfor er variabeltypen deklareret på forhånd ved hjælp af nøgleordet intHvis du skulle deklarere et flydende tal, ville du bruge nøgleordet float or double.
Hvis du forsøger at tildele en strengværdi til en int (fjern kommentarlinje 5), vil du få følgende kompileringsfejl.
Demo.java:5: error: incompatible types: String cannot be converted to int x = "Guru99";
I modsætning, Groovy understøtter dynamisk typingVariabler defineres ved hjælp af nøgleordet def, og typen behøver ikke at blive deklareret på forhånd. Runtime-funktionen finder ud af variabeltypen, og du kan endda ændre denne type senere.
def x = 104 println x.getClass() x = "Guru99" println x.getClass()
Output:
class java.lang.Integer class java.lang.String
In Groovy Du kan også oprette strenge med flere linjer. Sørg blot for at omslutte strengen i tredobbelte anførselstegn.
def x = """Groovy at Guru99""" println x
Output:
Groovy at Guru99
Bemærk: Du kan stadig bruge eksplicitte typer som f.eks. byte, short, intog long in GroovyMen når du først har deklareret typen eksplicit, kan du ikke ændre den dynamisk.
int x = 104 println x x = "Guru99"
Output:
104
Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
at jdoodle.run(jdoodle.groovy:3)
Command exited with non-zero status 1
Groovy Operatorer
En operator er et symbol, der fortæller compileren, at den skal udføre en specifik matematisk eller logisk manipulation. Groovy understøtter følgende fem operatorfamilier.
- Aritmetiske operatorer: tilføj (+), deltract (-), gange (*), dividere (/), modulus (%), forøgelse (++), formindskelse (–).
- Relationelle operatører: lig med (==), ikke lig med (!=), mindre end (<), mindre end eller lig med (<=), større end (>), større end eller lig med (>=).
- Logiske operatorer: og (&&), eller (||), ikke (!).
- Bitvise operatører: og (&), eller (|), eksklusiv-eller (^), komplement (~).
- Opgaveoperatører: tildel (=) og de sammensatte formerne (+=), (-=), (*=), (/=), (%=).
Groovy tilføjer et par operatorer, der Java ikke har, og de fjerner en masse nultjek-standardtekst.
| OperaTor | Beskrivelse |
|---|---|
| ?. | Sikker navigation. Returnerer null i stedet for at udløse en NullPointerException, når venstre side er null. |
| ?: | Elvis-operatoren. Returnerer venstre side, hvis den er sand, ellers højre side. |
| <=> | Rumskibsoperatør. Delegerer til compareTo og er nyttig i sorteringsafslutninger. |
| ==~ | Regex-match. Returnerer kun sand, når hele strengen matcher mønsteret. |
Groovy loops
In Java, ville du definere en tælleløkke som følger.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x++) {
System.out.println(x);
}
}
}
Output:
0 1 2 3 4 5
Du kan opnå det samme output i Groovy med upto metode, som inkluderer begge grænser.
0.upto(5) { println "$it" }
Output:
0 1 2 3 4 5
Her it er den implicitte parameter for lukningen, og den indeholder værdien af den aktuelle iteration. Overvej følgende kode.
2.upto(4) { println "$it" }
Output:
2 3 4
Du kan også bruge times metode. Den starter altid ved 0 og stopper én før det tal, du kalder den på, så du skal bruge 6 for at udskrive 0 til 5.
6.times { println "$it" }
Output:
0 1 2 3 4 5
Antag nu, at du vil udskrive 0, 2 og 4 med en Java til løkke.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x=x+2) {
System.out.println(x);
}
}
}
Output:
0 2 4
Du kan bruge step metode for samme resultat. Det andet argument er tilvæksten, og det første argument er en eksklusiv øvre grænse.
0.step(5, 2) { println "$it" }
Output:
0 2 4
Groovy Beslutningstagning
Groovy genbruger den Java betingede sætninger og tilføjer en langt mere fleksibel switchTabellen nedenfor opsummerer mulighederne.
| Statement | Beskrivelse |
|---|---|
| hvis erklæring | Som i Java, udføres brødteksten i if-sætningen, når betingelsen er sand. |
| if/else-sætning | Betingelsen i if-sætningen evalueres først. Hvis den er sand, køres sætningerne i if-blokken, og else-blokken springes over. Hvis den er falsk, køres sætningerne i else-blokken i stedet. |
| Indlejret if-sætning | Bruges når du har brug for at teste en yderligere betingelse i en if-blok. |
| skifte erklæring | En indlejret if-else-kæde bliver ulæselig, når du har mange betingelser. Switch-sætningen gør den samme logik lettere at læse. Groovy, kan en sagsetiket være en værdi, en klasse, et område, et regulært udtryk eller en lukning. |
| Indlejret switch-erklæring | Groovy tillader også at én switch-sætning placeres i en anden. |
Groovy Liste
En listestruktur giver dig mulighed for at gemme en samling af dataelementer. Groovy, en liste indeholder en sekvens af objektreferencer og bevarer positionen af hvert element i den sekvens. En listeliteral skrives som en række objekter adskilt af kommaer og omsluttet af firkantede parenteser.
Eksempler på Groovy lister:
- En liste over strenge:
['Angular', 'Nodejs'] - En liste over blandede objektreferencer:
['Groovy', 2, 4, 2.6] - En liste med heltalværdier:
[16, 17, 18, 19] - En tom liste:
[]
Følgende listemetoder er tilgængelige i Groovy.
| Metode | Beskrivelse |
|---|---|
| tilføje() | Tilføjer en ny værdi til slutningen af listen. |
| indeholder() | Returnerer sand, hvis listen indeholder en bestemt værdi. |
| få() | Returnerer elementet på den givne position. |
| er tom() | Returnerer sand, hvis listen ikke indeholder elementer. |
| minus() | Opretter en ny liste lavet af elementerne fra originalen, eksklusive dem, der er angivet i den givne samling. |
| plus() | Opretter en ny liste bestående af elementerne fra originalen sammen med dem i den givne samling. |
| pop () | Fjerner det sidste element fra listen og returnerer det. |
| fjerne() | Fjerner elementet på den givne position. |
| baglæns() | Opretter en ny liste, der omvender elementerne i den oprindelige liste. |
| størrelse() | Returnerer antallet af elementer i listen. |
| sortere() | Returnerer en sorteret kopi af listen. |
Overvej følgende Groovy eksempel på script.
def y = ["Guru99", "is", "Bedste", "for", "Groovy"] println y y.add("Learning") println(y.contains("is")) println(y.get(2)) println(y.pop())
Output:
[Guru99, is, Bedste, for, Groovy] true Bedste Learning
Den første linje udskriver den oprindelige liste med fem elementer, fordi add() har ikke løbet endnu. get(2) returnerer “Bedste” siden Groovy lister er nulindekserede, og pop() returnerer “Læring”, fordi det element blev tilføjet sidst.
Groovy Maps
A Groovy Kort er en samling af nøgle-værdi-par. Nøgler behøver ikke anførselstegn, når de er simple identifikatorer, hvilket holder kort-literalerne meget kompakte.
Eksempler på Groovy kort:
[tutorial: 'Java', language: 'Groovy']er en samling af to nøgle-værdi-par.[:]repræsenterer et tomt kort.
Her er en liste over de tilgængelige kortmetoder i Groovy.
| Metode | Beskrivelse |
|---|---|
| indeholder nøgle() | Kontrollerer om kortet indeholder den givne nøgle. |
| få() | Slår nøglen op i kortet og returnerer den matchende værdi. Hvis der ikke findes nogen indtastning, returneres null. |
| keySet () | Returnerer sættet af nøgler i kortet. |
| sætte() | Knytter den angivne værdi til den givne nøgle. Hvis kortet allerede indeholdt et kortping For den pågældende nøgle erstattes den gamle værdi. |
| størrelse() | Returnerer antallet af nøgle-værdi-kortpings. |
| værdier () | Returnerer en samlingsvisning af værdierne. |
Groovy eksempel:
def y = [fName:'Jen', lName:'Cruise', sex:'F'] print y.get("fName")
Output:
Jen
Groovy lukninger
A Groovy En closure er en kodeblok, der er pakket ind som et objekt. Den opfører sig som en metode eller en funktion, men den kan gemmes i en variabel og sendes rundt som enhver anden værdi.
Eksempel på en simpel lukning:
def myClosure = { println "My First Closure" } myClosure()
Output:
My First Closure
En lukning kan acceptere parametre. Listen over identifikatorer er kommasepareret, med en pil (->) der markerer slutningen af parameterlisten.
def myClosure = { a, b, c -> y = a + b + c println y } myClosure(1, 2, 3)
Output:
6
En lukning kan også returnere en værdi.
def myClosure = { a, b, c -> return (a + b + c) } println(myClosure(1, 2, 3))
Output:
6
Når du ikke deklarerer en parameterliste, Groovy leverer en enkelt implicit parameter med navnet itLukninger kan også overføres til andre lukninger, hvilket er præcis sådan, indsamlingsmetoder som f.eks. each, collectog findAll arbejde.
Groovy Værktøjer
Vi vil se på tre vigtige værktøjer, der følger med Groovy fordeling:
- groovysh: udfører kode interaktivt fra kommandolinjen.
- groovyKonsole: et grafisk vindue til interaktiv kodeudførelse.
- groovy: henretter Groovy scriptfiler, på samme måde som du ville køre en Perl- eller Python scripts.
Groovysh
- En kommandolinjeshell.
- Hjælper dig med at udføre Groovy kode interaktivt.
- Giver dig mulighed for at indtaste enkelte sætninger eller hele scripts.
Skærmbilledet nedenfor viser groovysh, der evaluerer udtryk én linje ad gangen.
Groovy Konsol
- En Swing-grænseflade, der fungerer som en minimalistisk Groovy udviklingsredaktør.
- Giver dig mulighed for at skrive og køre Groovy kode interaktivt.
- Hjælper dig med at indlæse og køre Groovy script-filer.
I Groovy I konsollen nedenfor indtastes scriptet i den øverste rude, og resultatet vises i den nederste rude.
Groovy
groovy kommandoen er den processor, der kører Groovy programmer og scripts. Den kompilerer kildekoden til bytekode i hukommelsen og udfører den i ét trin, så der ikke er behov for et separat byggetrin. Den kan også bruges til at teste simple Groovy udtryk direkte fra terminalen, som vist nedenfor.
Hvor Groovy Bruges i virkelige projekter
De fleste udviklere mødes Groovy ikke som et selvstændigt sprog, men som scriptinglaget i et værktøj, de allerede kører. Når man ved, hvor det vises, gør det ovenstående syntaks langt nemmere at placere.
| Værktøj | Hvordan Groovy anvendes |
|---|---|
| Jenkins | Deklarative og scriptede pipelines er skrevet i en Groovy DSL og delte biblioteker er almindelige Groovy klasser. |
| Gradle | Den klassiske build.gradle filen er en Groovy skrift, hvilket er grunden til, at det læses mere kompakt end et Maven POM eller en Ant byggefil. |
| SoapUI | Groovy Scripttrin og scriptpåstande driver dynamiske anmodningsdata og brugerdefinerede svarkontroller. |
| Spock | A Groovy testframework, hvis givne-hvornår-så-blokke og datatabeller er meget anvendt til JVM-enhedstests. |
| Elasticsearch og Grails | Grails bygger komplette webapplikationer på Groovy, og adskillige dataværktøjer accepterer Groovy til brugerdefineret scripting. |
In automatiseringstest for teams betyder dette dobbelt: CI-jobbet, der kører pakken, og selve testene kan begge være Groovy, så et enkelt sprog dækker pipeline-lim og assertion-logik.
Groovy Vs. Java
| Groovy | Java |
|---|---|
| Standardadgangsmodifikatoren er public, så en metode uden en modifikator er tilgængelig uden for dens klasse og pakke. | Standardadgangsmodifikatoren er pakke-privat, så felter, metoder og klasser uden en modifikator er kun synlige i deres pakke. |
| Gettere og settere genereres automatisk for klasseegenskaber. | Du skal selv definere getter- og setter-metoder for felter. |
| Groovy tillader variabelsubstitution inden for strenge i dobbelte anførselstegn. | Java understøtter ikke strenginterpolation. |
| Typeoplysninger er valgfrie. | Typeoplysninger er obligatoriske. |
| Udsagn behøver ikke at slutte med et semikolon. | Hver sætning slutter med et semikolon. |
| Groovy indpakker automatisk hvert script i en genereret scriptklasse. | Du skal bruge en main-metode for at gøre en klasse eksekverbar. |
Alt er offentligt og dynamisk som standard, men @CompileStatic Gendanner Java-niveau hastighed og kontrol. |
Alt bliver statisk kompileret og kontrolleret under byggeprocessen. |
Myter om Groovy
| Myte | Reality |
|---|---|
| Groovy kan kun bruges til scripting. | Det er fremragende til scripting, men det kompilerer også til almindelige klasser, som du kan sende i enhver JVM-applikation. |
| Groovy handler om lukninger, så det er bare et funktionelt programmeringssprog. | Groovy låner ideer fra funktionelle sprog som Lisp og Clojure, men det forbliver i bund og grund et objektorienteret sprog. |
| Groovy er kun værd at bruge til testdrevet udvikling. | Groovy passer godt til TDD med Spock, men det er bestemt ikke den eneste grund til at bruge det. |
| Du har kun brug for Groovy hvis du vil bruge Grails. | Grails er et kraftfuldt webudviklingsframework, men Gradle, Jenkins, og Spock bruger alle Groovy uden det. |
Ulemper ved at bruge Groovy
- JVM og Groovy Scriptopstartstiden er langsom, hvilket begrænser dets brug til hurtig scripting på OS-niveau.
- Groovy er ikke bredt anvendt uden for JVM-centrerede fællesskaber.
- Det er ubelejligt at bruge Groovy uden en IDE, der forstår dens dynamiske funktioner.
- Dynamisk forsendelse kan gøre Groovy kode langsommere end den tilsvarende Java kode, medmindre du ansøger
@CompileStatic. - Groovy programmer kan kræve mere hukommelse end almindelige Java programmer.
- Kendskab til Java er reelt en forudsætning.
Når du først er tryg ved Groovy syntaks, er det naturlige næste skridt økosystemet omkring det. Styrk det grundlæggende med Java tutorial, så se hvordan Groovy scripts driver builds og implementeringer i Jenkins, sammenlign byggeværktøjer med Maven og Apache Ant, og udforsk hvordan Groovy påstande passer ind i Selenium og API-testpakker.













