Groovy Handledning för skript för nybörjare
⚡ Smart sammanfattning
Groovy Skript är ett objektorienterat språk för Java plattform som kompilerar till JVM-bytekod. Den lägger till dynamisk typping, avslutningar och koncis syntax till Java, och den driver Jenkins rörledningar, Gradle bygger, och SoapUI påståenden.

Vad är en Groovy Manus?
Apache Groovy är objektorienterad, Java syntaxkompatibelt programmeringsspråk byggt för Java plattform. Detta dynamiska språk har många funktioner som liknar Python, Ruby, Smalltalk och Perl. Groovy källkoden kompileras till Java bytekod, så den körs på vilken plattform som helst där en Java Virtuell maskin är installerad. Groovy utför också mycket arbete bakom kulisserna, vilket gör att det känns mer smidigt och dynamiskt än vanligt Java.
A Groovy skript är helt enkelt en .groovy fil som innehåller satser som Groovy omsluter en genererad klass innan den körs. Det är därför du kan köra en enradig fil utan att skriva en klass eller en main metod. Groovy kan därför användas som skriptspråk för Java plattformen samtidigt som den erbjuder företagsfunktionerna hos JavaDen lägger till produktivitetsfunktioner som DSL-stöd, stängningar och valfri dynamisk typingTill skillnad från vissa andra språk är det utformat som ett komplement till Java, inte en ersättning för den.
💡 Tips: Groovy 5.0 är den nuvarande stabila utgåvan och riktar sig till JDK 11 och senare. Groovy 4.0 är fortfarande tillgänglig för JDK 8-projekt, och Groovy 6.0 är fortfarande i alfa för JDK 17. Kontrollera alltid systemkravstabellen på den officiella nedladdningssidan innan du väljer en version.
Varför Groovy?
Här är de viktigaste anledningarna till varför du bör använda och lära dig Groovy:
- Groovy är ett agilt och dynamiskt språk.
- Den integreras sömlöst med alla befintliga Java objekt och bibliotek.
- Det känns enkelt och naturligt att Java utvecklare.
- Koden är mer koncis och mer meningsfull än motsvarande Java koda.
- Du kan använda den så mycket eller så lite som du vill inuti Java tillämpningar.
- Den körs på standarden Java Virtuell maskin, så ingen separat körtid krävs.
Groovy Historik
- 2003: Startad av James StracHan och Bob McWhirter.
- 2004: Inlämnad till Java Gemenskapsprocessen som JSR 241, vilken senare drogs tillbaka.
- 2005: Återupptagna track av Jeremy Rayner och Guillaume Laforge.
- 2007: Groovy 1.0 släppt.
- 2012: Groovy 2.0 släppt.
- 2014: Groovy 2.3 släppt med officiellt stöd för JDK 8.
- 2015: Groovy blev ett toppnivåprojekt på Apache Software Foundation.
- 2022: Groovy 4.0 släppt, med Maven-koordinater flyttade till
org.apache.groovy. - 2025: Groovy 5.0 släppt för JDK 11 och senare.
Dragen av Groovy
- List-, mapp-, intervall- och reguljära uttrycklitteraler.
- Multimetoder (körtidsmetodsdispatch) och metaprogrammering.
- Groovy klasser och skript lagras vanligtvis i
.groovyfiler. - Skript innehåller Groovy uttalanden utan klassdeklaration.
- Skript kan också innehålla metoddefinitioner utanför klassdefinitioner.
- Groovy kod kan kompileras och integreras helt med en traditionell Java ansökan.
- Stöd på språknivå för kartor, listor och reguljära uttryck.
- Stöd för stängningar, dynamisk typingoch metaobjektprotokollet.
- Stöd för både statisk och dynamisk typing, plus överbelastning av operatören.
- Valfri statisk typkontroll genom
@TypeCheckedoch@CompileStaticannoteringar.
Hur man installerar Groovy
Steg 1) Se till att du har Java installerad.
Steg 2) Gå till https://groovy.apache.org/download.html och klicka på Windows installationslänk.
Obs: Du kan också installera Groovy från den binära Zip-filen, via en pakethanterare som SDKMAN!, Homebrew, Scoop eller Chocolatey, eller som ett plugin för din Java IDE. I detta Groovy genomgången vi kommer att hålla oss till Windows installatör.
Steg 3) Starta det nedladdade installationsprogrammet. Välj språk och klicka på OK.
Steg 4) Klicka på NÄSTA på välkomstskärmen.
Steg 5) Godkänn licensvillkoren.
Steg 6) Markera de komponenter du vill installera och klicka på NÄSTA.
Steg 7) Välj installationskatalogen och klicka på NÄSTA.
Steg 8) Välj mappen Start-meny och klicka på NÄSTA.
Steg 9) När installationen är klar, lämna sökvägarna som standard och klicka på NÄSTA.
Steg 10) Bekräfta alternativen för filassociation och klicka på NÄSTA.
Steg 11) I Start-menyn söker du efter Groovy Konsolen för att bekräfta installationen.
⚠️ Varning: Ocuco-landskapet Windows Installeraren är en artefakt som bidragits av communityn, inte en officiell Apache-utgåva. Om din organisation kräver signerade Apache-nedladdningar, använd den binära Zip-distributionen och verifiera dess .asc signatur och .sha256 kontrollsumma istället.
Groovy Hej världsexempel
Anta att du vill skriva ut den enkla strängen "Hello World" i JavaKoden skulle se ut så här.
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Produktion:
Hello World
Koden ovan är giltig i båda Java och Groovy, därför att Groovy accepterar nästan alla Java syntax. Fördelen med Groovy är att du kan ta bort klassdeklarationen, public-metoden och det fullständigt kvalificerade print-anropet, och uppnå samma utdata med en enda rad.
println "Hello World"
Produktion:
Hello World
- Det finns inget behov av semikolon.
- Det finns inget behov av en klass eller en
mainmetod. System.out.printlnreduceras tillprintln.
Groovy variabler
In Java, statisk bindning är obligatorisk, vilket innebär att variabeltypen måste deklareras i förväg.
public class Demo {
public static void main(String[] args) {
int x = 104;
System.out.println(x);
//x = "Guru99";
}
}
Produktion:
104
I exemplet ovan deklareras variabeltypen i förväg med hjälp av nyckelordet intOm du skulle deklarera ett flyttal skulle du använda nyckelordet float or double.
Om du försöker tilldela ett strängvärde till en int (avkommentera rad 5) får du följande kompileringsfel.
Demo.java:5: error: incompatible types: String cannot be converted to int x = "Guru99";
I kontrast, Groovy stöder dynamisk typingVariabler definieras med hjälp av nyckelordet def, och typen behöver inte deklareras i förväg. Körtiden räknar ut variabeltypen, och du kan till och med ändra den typen senare.
def x = 104 println x.getClass() x = "Guru99" println x.getClass()
Produktion:
class java.lang.Integer class java.lang.String
In Groovy Du kan också skapa flerradiga strängar. Se bara till att du omger strängen med tre citattecken.
def x = """Groovy at Guru99""" println x
Produktion:
Groovy at Guru99
Obs: Du kan fortfarande använda explicita typer som byte, short, intoch long in GroovyMen när du väl har deklarerat typen explicit kan du inte ändra den dynamiskt.
int x = 104 println x x = "Guru99"
Produktion:
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 är en symbol som anger att kompilatorn ska utföra en specifik matematisk eller logisk manipulation. Groovy stöder följande fem operatörsfamiljer.
- Aritmetiska operatorer: lägg till (+), subtract (-), multiplicera (*), dividera (/), modul (%), ökning (++), minskning (–).
- Relationsoperatörer: lika med (==), inte lika med (!=), mindre än (<), mindre än eller lika med (<=), större än (>), större än eller lika med (>=).
- Logiska operatorer: och (&&), eller (||), inte (!).
- Bitvisa operatorer: och (&), eller (|), exklusiv-eller (^), komplement (~).
- Uppdragsoperatörer: tilldela (=) och de sammansatta formerna (+=), (-=), (*=), (/=), (%=).
Groovy lägger till några operatorer som Java inte har, och de tar bort en massa nollkontrollsstandard.
| Operator | BESKRIVNING |
|---|---|
| ?. | Säker navigering. Returnerar null istället för att utlösa ett NullPointerException när vänster sida är null. |
| ?: | Elvis-operatorn. Returnerar vänster sida om den är sanningsenlig, annars höger sida. |
| <=> | Rymdskeppsoperatör. Delegerar till compareTo och är användbar i sorteringsavslutningar. |
| ==~ | Regex-matchning. Returnerar sant endast när hela strängen matchar mönstret. |
Groovy Loops
In Java, skulle du definiera en räkneloop enligt följande.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x++) {
System.out.println(x);
}
}
}
Produktion:
0 1 2 3 4 5
Du kan uppnå samma utgång i Groovy med upto metod, som inkluderar båda gränserna.
0.upto(5) { println "$it" }
Produktion:
0 1 2 3 4 5
Här it är den implicita parametern för stängningen, och den innehåller värdet för den aktuella iterationen. Betrakta följande kod.
2.upto(4) { println "$it" }
Produktion:
2 3 4
Du kan också använda times Metoden. Den börjar alltid på 0 och slutar ett siffra före det nummer du anger den på, så du behöver 6 för att skriva ut 0 till 5.
6.times { println "$it" }
Produktion:
0 1 2 3 4 5
Anta nu att du vill skriva ut 0, 2 och 4 med en Java för slinga.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x=x+2) {
System.out.println(x);
}
}
}
Produktion:
0 2 4
Du kan använda step metod för samma resultat. Det andra argumentet är inkrementet, och det första argumentet är en exklusiv övre gräns.
0.step(5, 2) { println "$it" }
Produktion:
0 2 4
Groovy Beslutsfattande
Groovy återanvänder Java villkorliga satser och lägger till en mycket mer flexibel switchTabellen nedan sammanfattar alternativen.
| . | BESKRIVNING |
|---|---|
| if uttalande | Som i Java, körs brödtexten i if-satsen när villkoret är sant. |
| if/else-sats | Villkoret i if-satsen utvärderas först. Om den är sant körs satserna i if-blocket och else-blocket hoppas över. Om den är falsk körs satserna i else-blocket istället. |
| Kapslad if-sats | Används när du behöver testa ytterligare ett villkor inuti ett if-block. |
| växla uttalande | En kapslad if-else-kedja blir oläslig när du har många villkor. Switch-satsen gör samma logik lättare att läsa. Groovy, kan en ärendeetikett vara ett värde, en klass, ett intervall, ett reguljärt uttryck eller en avslutning. |
| Kapslad switch-sats | Groovy tillåter också att en switch-sats placeras inuti en annan. |
Groovy Lista
En liststruktur låter dig lagra en samling dataelement. Groovy, en lista innehåller en sekvens av objektreferenser och bevarar positionen för varje element i den sekvensen. En listliteral skrivs som en serie objekt separerade med kommatecken och omgivna av hakparenteser.
Exempel på Groovy listor:
- En lista med strängar:
['Angular', 'Nodejs'] - En lista med blandade objektreferenser:
['Groovy', 2, 4, 2.6] - En lista med heltal:
[16, 17, 18, 19] - En tom lista:
[]
Följande listmetoder finns tillgängliga i Groovy.
| Metod | BESKRIVNING |
|---|---|
| Lägg till() | Lägger till ett nytt värde i slutet av listan. |
| innehåller() | Returnerar sant om listan innehåller ett visst värde. |
| skaffa sig() | Returnerar elementet vid den givna positionen. |
| är tom() | Returnerar sant om listan inte innehåller några element. |
| minus() | Skapar en ny lista gjord av elementen i originalet, exklusive de som anges i den givna samlingen. |
| plus() | Skapar en ny lista gjord av elementen i originalet tillsammans med de i den givna samlingen. |
| pop() | Tar bort det sista objektet från listan och returnerar det. |
| avlägsna() | Tar bort elementet på den givna positionen. |
| omvänd() | Skapar en ny lista som inverterar elementen i den ursprungliga listan. |
| storlek() | Returnerar antalet element i listan. |
| sortera() | Returnerar en sorterad kopia av listan. |
Tänk på följande Groovy skript exempel.
def y = ["Guru99", "is", "Best", "for", "Groovy"] println y y.add("Learning") println(y.contains("is")) println(y.get(2)) println(y.pop())
Produktion:
[Guru99, is, Best, for, Groovy] true Best Learning
Den första raden skriver ut den ursprungliga listan med fem element, eftersom add() har inte sprungit än. get(2) returnerar "Bäst" sedan Groovy listor är nollindexerade, och pop() returnerar "Inlärning" eftersom det objektet lades till sist.
Groovy kartor
A Groovy Karta är en samling nyckel-värde-par. Nycklar behöver inte citattecken när de är enkla identifierare, vilket gör kartliteraler mycket kompakta.
Exempel på Groovy kartor:
[tutorial: 'Java', language: 'Groovy']är en samling av två nyckel-värde-par.[:]representerar en tom karta.
Här är en lista över de kartmetoder som finns tillgängliga i Groovy.
| Metod | BESKRIVNING |
|---|---|
| containsKey() | Kontrollerar om kartan innehåller den angivna nyckeln. |
| skaffa sig() | Söker upp nyckeln i kartan och returnerar matchande värde. Om ingen post hittas returneras null. |
| keySet () | Returnerar uppsättningen nycklar i kartan. |
| sätta() | Associerar det angivna värdet med den angivna nyckeln. Om kartan redan innehöll en kartaping För den nyckeln ersätts det gamla värdet. |
| storlek() | Returnerar antalet nyckel-värde-mappningarpings. |
| värden () | Returnerar en samlingsvy av värdena. |
Groovy exempel:
def y = [fName:'Jen', lName:'Cruise', sex:'F'] print y.get("fName")
Produktion:
Jen
Groovy nedläggningar
A Groovy closure är ett kodblock som är inslaget som ett objekt. Det beter sig som en metod eller en funktion, men det kan lagras i en variabel och skickas runt som vilket annat värde som helst.
Exempel på en enkel avslutning:
def myClosure = { println "My First Closure" } myClosure()
Produktion:
My First Closure
En stängning kan acceptera parametrar. Listan över identifierare är kommaseparerad, med en pil (->) som markerar slutet på parameterlistan.
def myClosure = { a, b, c -> y = a + b + c println y } myClosure(1, 2, 3)
Produktion:
6
En stängning kan också returnera ett värde.
def myClosure = { a, b, c -> return (a + b + c) } println(myClosure(1, 2, 3))
Produktion:
6
När du inte deklarerar en parameterlista, Groovy levererar en enda implicit parameter med namnet itAvslut kan också skickas vidare till andra avslut, vilket är precis hur insamlingsmetoder som each, collectoch findAll arbete.
Groovy Verktyg
Vi ska titta på tre viktiga verktyg som medföljer Groovy distribution:
- groovysh: kör kod interaktivt från kommandoraden.
- groovyConsole: ett grafiskt fönster för interaktiv kodkörning.
- häftig: exekveras Groovy skriptfiler, på samma sätt som du skulle köra en Perl- eller Python skript.
Groovysh
- Ett kommandoradsskal.
- Hjälper dig att genomföra Groovy koda interaktivt.
- Låter dig ange enskilda uttalanden eller hela skript.
Skärmdumpen nedan visar groovysh som utvärderar uttryck en rad i taget.
Groovy Konsol
- Ett Swing-gränssnitt som fungerar som ett minimalt Groovy utvecklingsredaktör.
- Låter dig skriva och köra Groovy koda interaktivt.
- Hjälper dig att ladda och köra Groovy skriptfiler.
I Groovy Konsolen nedan, skriptet skrivs i den övre rutan och resultatet visas i den nedre rutan.
Groovy
Ocuco-landskapet groovy kommandot är processorn som körs Groovy program och skript. Den kompilerar källkoden till bytekod i minnet och kör den i ett steg, så inget separat byggsteg behövs. Den kan också användas för att testa enkla Groovy uttryck direkt från terminalen, som visas nedan.
Var Groovy Används i verkliga projekt
De flesta utvecklare möts Groovy inte som ett fristående språk utan som skriptlagret inuti ett verktyg de redan kör. Att veta var det visas gör syntaxen ovan mycket lättare att placera.
| Verktyget | Hur Groovy används |
|---|---|
| Jenkins | Deklarativa och skriptade pipelines skrivs i en Groovy DSL och delade bibliotek är vanliga Groovy klasser. |
| Gradle | Den klassiska build.gradle filen är en Groovy skript, vilket är anledningen till att det läses mer kompakt än ett Maven POM eller en Ant byggfilen. |
| SoapUI | Groovy skriptsteg och skriptintyg driver dynamiska begärandedata och anpassade svarskontroller. |
| Spock | A Groovy testramverk vars givna-när-då-block och datatabeller används i stor utsträckning för JVM-enhetstester. |
| Elasticsearch och Grails | Grails bygger kompletta webbapplikationer på Groovy, och flera dataverktyg accepterar Groovy för anpassat skript. |
In automatiseringstestning för teamen spelar detta dubbel roll: både CI-jobbet som kör sviten och själva testerna kan vara Groovy, så ett enda språk täcker pipeline-lim och assertionlogik.
Groovy Vs. Java
| Groovy | Java |
|---|---|
| Standardåtkomstmodifieraren är public, så en metod utan modifierare är tillgänglig utanför sin klass och sitt paket. | Standardåtkomstmodifieraren är package-private, så fält, metoder och klasser utan modifierare är bara synliga i sitt paket. |
| Getters och setters genereras automatiskt för klassegenskaper. | Du måste själv definiera getter- och setter-metoder för fält. |
| Groovy tillåter variabelsubstitution inuti strängar med dubbla citationstecken. | Java stöder inte stränginterpolering. |
| Typinformation är valfri. | Typinformation är obligatorisk. |
| Satser behöver inte avslutas med semikolon. | Varje sats avslutas med ett semikolon. |
| Groovy slår automatiskt in varje skript i en genererad skriptklass. | Du behöver en main-metod för att göra en klass körbar. |
Allt är offentligt och dynamiskt som standard, men @CompileStatic återställer Java-nivåhastighet och kontroll. |
Allt kompileras statiskt och kontrolleras vid byggtillfället. |
Myter om Groovy
| Myt | Verkligheten |
|---|---|
| Groovy kan endast användas för skriptning. | Det är utmärkt för skriptning, men det kompilerar även till vanliga klasser som du kan skicka inuti vilken JVM-applikation som helst. |
| Groovy handlar om stängningar, så det är bara ett funktionellt programmeringsspråk. | Groovy lånar idéer från funktionella språk som Lisp och Clojure, men det förblir i grunden ett objektorienterat språk. |
| Groovy är endast värt att använda för testdriven utveckling. | Groovy passar starkt för TDD med Spock, men det är verkligen inte den enda anledningen att använda den. |
| Du behöver bara Groovy om du vill använda Grails. | Grails är ett kraftfullt ramverk för webbutveckling, men Gradle, Jenkins, och Spock använder alla Groovy utan det. |
Nackdelar med att använda Groovy
- JVM och Groovy Skriptstarttiden är långsam, vilket begränsar dess användning för snabb skriptning på operativsystemnivå.
- Groovy är inte allmänt antas utanför JVM-centrerade communities.
- Det är obekvämt att använda Groovy utan en IDE som förstår dess dynamiska funktioner.
- Dynamisk utskickning kan göra Groovy kod långsammare än motsvarande Java kod om du inte ansöker
@CompileStatic. - Groovy program kan behöva mer minne än vanliga Java program.
- Kunskap av Java är i praktiken en förutsättning.
När du väl känner dig bekväm med Groovy syntax, det naturliga nästa steget är ekosystemet runt den. Stärk grunderna med Java handledning, se sedan hur Groovy skript driver byggen och distributioner i Jenkins, jämför byggverktyg med Maven och Apache Antoch utforska hur Groovy påståenden passar in i Selenium och API-testsviter.













