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.

  • 🧩 Java kompatibel: Mest giltigt Java koden kompileras oförändrad i Groovy, så inlärningskostnaden förblir mycket låg.
  • Less standardprotokoll: En enda println-rad ersätter klassen, main-metoden och System.out-anropet. Java krav.
  • 🔀 Dynamisk typing: Nyckelordet def låter en variabel innehålla ett heltal och sedan en sträng vid körning.
  • 🔁 Kompakta loopar: Metoderna upto, times och step ersätter utförlig C-stil för loopar på en rad.
  • 📦 Inbyggda samlingar: Listor och kartor har litteral syntax plus hjälpare som pop, keySet och sort.
  • 🧠 Stängningar: Kodblock fungerar som objekt, accepterar parametrar, returnerar värden och kapslas inuti andra stängningar.
  • ⚙️ Tre verktyg: groovysh ger ett skal, groovyConsole ger ett grafiskt gränssnitt och groovy kör skriptfiler direkt.

Groovy Handledning för skript för nybörjare

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 .groovy filer.
  • 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 @TypeChecked och @CompileStatic annoteringar.

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.

Groovy nedladdningssidan med installationslänken

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.

Groovy dialogruta för val av installationsspråk

Steg 4) Klicka på NÄSTA på välkomstskärmen.

Groovy välkomstskärmen för installationsprogrammet

Steg 5) Godkänn licensvillkoren.

Groovy skärmen för installationslicensavtal

Steg 6) Markera de komponenter du vill installera och klicka på NÄSTA.

Groovy skärmen för val av installationskomponent

Steg 7) Välj installationskatalogen och klicka på NÄSTA.

Groovy skärm för installationskatalogen för installationsprogrammet

Steg 8) Välj mappen Start-meny och klicka på NÄSTA.

Groovy installationsprogrammets startmeny-mappskärm

Steg 9) När installationen är klar, lämna sökvägarna som standard och klicka på NÄSTA.

Groovy sökvägen för installationsmiljön

Steg 10) Bekräfta alternativen för filassociation och klicka på NÄSTA.

Groovy skärm för association av installationsfiler

Steg 11) I Start-menyn söker du efter Groovy Konsolen för att bekräfta installationen.

Startmenysökning som visar Groovy Konsolgenväg

⚠️ 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 main metod.
  • System.out.println reduceras till println.

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:

  1. groovysh: kör kod interaktivt från kommandoraden.
  2. groovyConsole: ett grafiskt fönster för interaktiv kodkörning.
  3. 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.

groovysh kommandoradsskal körs Groovy uttalanden

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 Console Swing-redigeraren med skript- och utdatarutor

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.

groovy-kommandot kör ett skript från terminalen

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.

Vanliga frågor

Groovy 5.0 riktar sig mot JDK 11 och högre. Groovy 4.0 stöder fortfarande JDK 8, och den som är på gång Groovy Rad 6.0 riktar sig till JDK 17. Kontrollera systemkravstabellen på den officiella Apache-nedladdningssidan innan du binder dig till en version.

Nej. Groovy-kommandot kompilerar en .groovy-fil till bytekod i minnet och kör den omedelbart. Du kan fortfarande kompilera i förväg med groovyc när du vill att återanvändbara .class-filer ska paketeras inuti en Java ansökan.

Ja. Apache Groovy är släppt under Apache-licensen 2.0, så kommersiell användning, modifiering och omdistribution är tillåten utan kostnad. Endast de vanliga skyldigheterna gällande tillskrivning och licensmeddelanden gäller för omdistribuerade versioner.

Groovy är programmeringsspråket. Grails är ett fullstack-webbramverk skrivet i Groovy. Du kan använda Groovy för byggfiler, pipelines eller tester utan att någonsin installera Grails, men Grails kan inte existera utan Groovy.

De hanterar vanliga idiom som stängningar, insamlingsmetoder och pipeline-steg väl. Kör alltid genererade skript i groovyConsole först, eftersom modeller ibland blandas. Java syntax med Groovy genvägar eller uppfinna metoder som inte finns.

Klistra in stapeln trace och skriptet till en assistent för att avslöja sannolika orsaker såsom en GroovyCastException, ett saknat sandbox-godkännande eller en felaktig stängningsdelegat. Behandla varje förslag som en hypotes och bekräfta det mot den verkliga byggloggen.

Sammanfatta detta inlägg med: