Groovy Script bemutató kezdőknek
⚡ Okos összefoglaló
Groovy A Script egy objektumorientált nyelv a következők számára: Java platform, amely JVM bájtkódra fordul. Dinamikus típust ad hozzáping, lezárások és tömör szintaxis Java, és ez erőt ad Jenkins csővezetékek, Gradle épít, és SoapUI állítások.

Mi az a Groovy Forgatókönyv?
Apache Groovy objektumorientált, Java szintaxiskompatibilis programozási nyelv, amelyet a következőhöz fejlesztettek ki: Java platform. Ez a dinamikus nyelv számos olyan funkcióval rendelkezik, amelyek hasonlóak a Python, Ruby, Smalltalk és Perl. Groovy a forráskódot összeállítják Java bájtkód, így bármilyen platformon fut, ahol egy Java Virtuális gép telepítve van. Groovy sok munkát végez a színfalak mögött, ami miatt agilisabbnak és dinamikusabbnak érződik, mint a sima Java.
A Groovy forgatókönyv egyszerűen egy .groovy olyan állításokat tartalmazó fájl Groovy egy generált osztályt becsomagol a futtatása előtt. Ezért futtathatsz egy egysoros fájlt osztály vagy egy main módszer. Groovy ezért szkriptnyelvként használható a Java platform, miközben továbbra is kínálja a vállalati képességeit JavaOlyan termelékenységi funkciókat ad hozzá, mint a DSL-támogatás, a lezárások és az opcionális dinamikus típus.pingNéhány más nyelvvel ellentétben, a következő kiegészítőjeként tervezték: Java, nem pedig annak helyettesítője.
💡 Tipp: Groovy Az 5.0 a jelenlegi stabil kiadási vonal, és a JDK 11-es és újabb verziókat célozza meg. Groovy A 4.0 továbbra is elérhető a JDK 8 projektekhez, és Groovy A JDK 17 6.0-s verziója még alfa fázisban van. Verzióválasztás előtt mindig ellenőrizd a hivatalos letöltési oldalon található rendszerkövetelményeket.
Miért Groovy?
Íme a fő okok, amiért érdemes használni és tanulni Groovy:
- Groovy egy agilis és dinamikus nyelv.
- Zökkenőmentesen integrálható az összes meglévővel Java objektumok és könyvtárak.
- Könnyűnek és természetesnek tűnik Java fejlesztők.
- A kód tömörebb és értelmesebb, mint a vele egyenértékű kód. Java kód.
- Annyit vagy olyan keveset használhatsz belül, amennyit csak szeretnél Java alkalmazásokat.
- Szabványon fut Java Virtuális gép, így nincs szükség külön futtatókörnyezetre.
Groovy Történelem
- 2003: Indította James S.tracHan és Bob McWhirter.
- 2004: Benyújtva a Java Közösségi eljárás JSR 241 néven, amelyet később visszavontak.
- 2005: Visszahozták tracJeremy Rayner és Guillaume Laforge tollából.
- 2007: Groovy 1.0 megjelent.
- 2012: Groovy 2.0 megjelent.
- 2014: Groovy A 2.3-as verzió hivatalos JDK 8-támogatással jelent meg.
- 2015: Groovy az Apache Software egyik legfelső szintű projektjévé vált Foundation.
- 2022: Groovy Megjelent a 4.0, a Maven koordináták átkerültek ide:
org.apache.groovy. - 2025: Groovy 5.0 megjelent a JDK 11-es és újabb verziókhoz.
Jellemzői Groovy
- Lista, map, range és reguláris kifejezés literálok.
- Multimetódusok (futásidejű metódusküldés) és metaprogramozás.
- Groovy Az osztályok és szkriptek általában a következő helyen tárolódnak:
.groovyfájlokat. - A szkriptek tartalmazzák Groovy állítások osztálydeklaráció nélkül.
- A szkriptek az osztálydefiníciókon kívül is tartalmazhatnak metódusdefiníciókat.
- Groovy a kód lefordítható és teljesen integrálható egy hagyományos Java alkalmazás.
- Nyelvszintű támogatás térképekhez, listákhoz és reguláris kifejezésekhez.
- Lezárások támogatása, dinamikus típusping, és a meta-objektum protokoll.
- Statikus és dinamikus ty támogatásping, plusz a kezelő túlterhelése.
- Opcionális statikus típusellenőrzés a
@TypeCheckedés a@CompileStaticmegjegyzések.
Hogyan telepítsük Groovy
Step 1) Győződjön meg róla, hogy van Java telepítve.
Step 2) Tovább https://groovy.apache.org/download.html és kattintson a Windows telepítői link.
Megjegyzés: Telepítheti is Groovy a bináris Zip fájlból, egy csomagkezelőn, például az SDKMAN!-on, a Homebrew-n, a Scoop-on vagy a Chocolatey-n keresztül, vagy bővítményként a saját verziójához. Java IDE. Ebben Groovy végigjátszásnál maradunk Windows telepítő.
Step 3) Indítsa el a letöltött telepítőt. Válassza ki a nyelvet, majd kattintson az OK gombra.
Step 4) Az üdvözlőképernyőn kattintson a KÖVETKEZŐ gombra.
Step 5) Fogadja el a licencfeltételeket.
Step 6) Jelölje ki a telepíteni kívánt összetevőket, majd kattintson a KÖVETKEZŐ gombra.
Step 7) Válassza ki a telepítési könyvtárat, majd kattintson a KÖVETKEZŐ gombra.
Step 8) Válaszd ki a Start menü mappáját, majd kattints a KÖVETKEZŐ gombra.
Step 9) A telepítés befejezése után hagyja az elérési utakat az alapértelmezett értéken, és kattintson a KÖVETKEZŐ gombra.
Step 10) Erősítse meg a fájltársítási beállításokat, majd kattintson a KÖVETKEZŐ gombra.
Step 11) A Start menüben keresse meg a Groovy Konzol a telepítés megerősítéséhez.
⚠️ Figyelmeztetés: Az Windows A telepítő egy közösség által létrehozott eszköz, nem hivatalos Apache kiadás. Ha szervezete aláírt Apache letöltéseket igényel, használja a bináris Zip disztribúciót, és ellenőrizze a .asc aláírás és .sha256 ellenőrzőösszeg helyett.
Groovy Hello World Példa
Tegyük fel, hogy a „Hello World” egyszerű karakterláncot szeretnéd kinyomtatni a következőképpen: JavaA kód így nézne ki.
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
output:
Hello World
A fenti kód mindkettőben érvényes Java és a Groovy, Mert Groovy szinte mindent elfogad Java szintaxis. Az előnye a Groovy az, hogy elhagyhatod az osztálydeklarációt, a public metódust és a teljes minősítésű print hívást, és ugyanazt a kimenetet érheted el egyetlen sorral.
println "Hello World"
output:
Hello World
- Nincs szükség pontosvesszővel.
- Nincs szükség sem tanfolyamra, sem
mainmódszer. System.out.printlnerre redukálódikprintln.
Groovy Változók
In JavaA statikus kötés kötelező, ami azt jelenti, hogy a változó típusát előre deklarálni kell.
public class Demo {
public static void main(String[] args) {
int x = 104;
System.out.println(x);
//x = "Guru99";
}
}
output:
104
A fenti példában a változó típusát előre deklaráljuk a kulcsszó használatával. intHa lebegőpontos számot kellene deklarálnod, akkor a kulcsszót kellene használnod. float or double.
Ha megpróbálsz karakterlánc értéket rendelni egy int (az 5. sor megjegyzésének törlése), akkor a következő fordítási hibát kapod.
Demo.java:5: error: incompatible types: String cannot be converted to int x = "Guru99";
Ellentétben, Groovy támogatja a dinamikus típustpingA változókat a kulcsszóval definiáljuk. def, és a típust nem kell előre deklarálni. A futási környezet kiszámolja a változó típusát, és ezt a típust később akár módosíthatjuk is.
def x = 104 println x.getClass() x = "Guru99" println x.getClass()
output:
class java.lang.Integer class java.lang.String
In Groovy Többsoros karakterláncokat is létrehozhatsz. Csak ügyelj arra, hogy a karakterláncot idézőjelek közé tedd.
def x = """Groovy at Guru99""" println x
output:
Groovy at Guru99
Jegyzet: Továbbra is használhatsz explicit típusokat, mint például byte, short, intés long in GroovyDe ha egyszer explicit módon deklaráltad a típust, akkor azt nem tudod dinamikusan megváltoztatni.
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 Operatorzok
Az operátor egy olyan szimbólum, amely arra utasítja a fordítót, hogy hajtson végre egy adott matematikai vagy logikai műveletet. Groovy a következő öt operátorcsaládot támogatja.
- Aritmetikai operátorok: hozzáadás (+), altract (-), szorzás (*), osztás (/), modulus (%), növekedés (++), csökkentés (–).
- Relációs operátorok: egyenlő (==), nem egyenlő (!=), kisebb, mint (<), kisebb vagy egyenlő (<=), nagyobb, mint (>), nagyobb vagy egyenlő (>=).
- Logikai operátorok: és (&&), vagy (||), nem (!).
- Bitenkénti operátorok: és (&), vagy (|), kizáró vagy (^), kiegészítés (~).
- Hozzárendelési operátorok: rendelje hozzá a (=) jelet és az összetett alakokat (+=), (-=), (*=), (/=), (%=).
Groovy hozzáad néhány operátort, amelyek Java nincs rajta, és sok null-check sablont eltávolítanak.
| Operator | Leírás |
|---|---|
| ?. | Biztonságos navigáció. Null értéket ad vissza NullPointerException helyett, ha a bal oldal null. |
| ?: | Elvis operátor. Visszaadja a bal oldalt, ha az igaz, egyébként a jobb oldalt. |
| <=> | Űrhajó operátor. A compareTo metódusnak delegál, és rendezési lezárásokon belül hasznos. |
| ==~ | Regex egyezés. Csak akkor ad vissza igaz értéket, ha a teljes karakterlánc illeszkedik a mintára. |
Groovy Loops
In Java, a következőképpen definiálná a számláló ciklust.
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
Ugyanazt a kimenetet érheti el Groovy a ... val upto metódus, amely mindkét korlátot magában foglalja.
0.upto(5) { println "$it" }
output:
0 1 2 3 4 5
Itt it a lezárás implicit paramétere, és az aktuális iteráció értékét tartalmazza. Tekintsük a következő kódot.
2.upto(4) { println "$it" }
output:
2 3 4
Ön is használja a times metódus. Mindig 0-val kezdődik, és eggyel a meghívott szám előtt áll meg, tehát 6-ra van szükség a 0 és 5 közötti értékek kinyomtatásához.
6.times { println "$it" }
output:
0 1 2 3 4 5
Most tegyük fel, hogy ki szeretnéd nyomtatni a 0-t, a 2-t és a 4-et egy Java hurokhoz.
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
Használhatja a step metódus ugyanarra az eredményre. A második argumentum a növekmény, az első argumentum pedig egy kizáró felső korlát.
0.step(5, 2) { println "$it" }
output:
0 2 4
Groovy Döntéshozatal
Groovy újrahasznosítja a Java feltételes utasításokat, és sokkal rugalmasabb megoldást kínál switchAz alábbi táblázat összefoglalja a lehetőségeket.
| nyilatkozat | Leírás |
|---|---|
| ha nyilatkozat | Mint a Java, az if utasítás törzse akkor hajtódik végre, amikor a feltétel igaz. |
| if/else utasítás | Az if utasításban lévő feltétel kiértékelésére kerül sor először. Ha igaz, akkor az if blokkban lévő utasítások futnak le, az else blokk kihagyásra kerül. Ha hamis, akkor az else blokkban lévő utasítások futnak le helyette. |
| Beágyazott if utasítás | Akkor használjuk, ha egy if blokkon belül további feltételt kell tesztelni. |
| switch utasítás | Egy beágyazott if-else lánc olvashatatlanná válik, ha sok feltétel van. A switch utasítás ugyanezt a logikát könnyebben olvashatóvá teszi. A Groovy, egy esetcímke lehet érték, osztály, tartomány, reguláris kifejezés vagy lezárás. |
| Beágyazott kapcsoló utasítás | Groovy lehetővé teszi egy switch utasítás egy másikba helyezését is. |
Groovy Lista
A listastruktúra lehetővé teszi adatelemek gyűjteményének tárolását. Groovy, egy lista objektumhivatkozások sorozatát tartalmazza, és megőrzi az egyes elemek pozícióját ebben a sorozatban. A lista literál vesszővel elválasztott és szögletes zárójelbe tett objektumok sorozataként írható.
Példák Groovy felsorolja:
- Karakterláncok listája:
['Angular', 'Nodejs'] - Vegyes objektumhivatkozások listája:
['Groovy', 2, 4, 2.6] - Egész értékek listája:
[16, 17, 18, 19] - Egy üres lista:
[]
A következő listamódszerek érhetők el a következőben: Groovy.
| Módszer | Leírás |
|---|---|
| add () | Hozzáfűz egy új értéket a lista végéhez. |
| tartalmazza () | Igaz értéket ad vissza, ha a lista tartalmaz egy adott értéket. |
| get () | Visszaadja az adott pozícióban lévő elemet. |
| üres() | Igaz értéket ad vissza, ha a lista nem tartalmaz elemeket. |
| mínusz() | Létrehoz egy új listát az eredeti elemeiből, a megadott gyűjteményben megadott elemek kivételével. |
| plusz() | Létrehoz egy új listát az eredeti elemeiből és a megadott gyűjteményben található elemekkel együtt. |
| pop () | Eltávolítja a listából az utolsó elemet, majd visszaadja azt. |
| eltávolítás () | Eltávolítja az elemet a megadott pozícióban. |
| fordított () | Létrehoz egy új listát, amely megfordítja az eredeti lista elemeit. |
| méret () | Visszaadja a lista elemeinek számát. |
| rendezés () | A lista rendezett másolatát adja vissza. |
Tekintsük a következő Groovy szkript példa.
def y = ["Guru99", "is", "Best", "for", "Groovy"] println y y.add("Learning") println(y.contains("is")) println(y.get(2)) println(y.pop())
output:
[Guru99, is, Best, for, Groovy] true Best Learning
Az első sor kiírja az eredeti öt elemből álló listát, mert add() még nem futott be. get(2) „Legjobb azóta” értéket adja vissza Groovy a listák nulla indexűek, és pop() „Learning” értéket ad vissza, mivel ez az elem lett utoljára hozzáfűzve.
Groovy Térképek
A Groovy A map kulcs-érték párok gyűjteménye. A kulcsoknak nem kell idézőjelek közé tenniük, ha egyszerű azonosítók, ami nagyon kompakttá teszi a map literálokat.
Példák Groovy térképek:
[tutorial: 'Java', language: 'Groovy']két kulcs-érték pár gyűjteménye.[:]egy üres térképet jelent.
Itt található a következőben elérhető térképezési módszerek listája: Groovy.
| Módszer | Leírás |
|---|---|
| includeKey() | Ellenőrzi, hogy a map tartalmazza-e a megadott kulcsot. |
| get () | Kikeresi a kulcsot a Térképen, és visszaadja a megfelelő értéket. Ha nem talál bejegyzést, akkor null értéket ad vissza. |
| keySet() | Visszaadja a Map kulcsainak halmazát. |
| tesz() | A megadott értéket társítja a megadott kulcshoz. Ha a Térkép már tartalmazott egy térképetping az adott kulcshoz a régi érték felülíródik. |
| méret () | Visszaadja a kulcs-érték párok számát.pings. |
| értékek () | Az értékek gyűjteménynézetét adja vissza. |
Groovy példa:
def y = [fName:'Jen', lName:'Cruise', sex:'F'] print y.get("fName")
output:
Jen
Groovy lezárások
A Groovy A closure egy objektumként csomagolt kódblokk. Úgy viselkedik, mint egy metódus vagy egy függvény, de tárolható egy változóban, és átadható, mint bármely más érték.
Példa egy egyszerű lezárásra:
def myClosure = { println "My First Closure" } myClosure()
output:
My First Closure
Egy lezárás paramétereket fogadhat el. Az azonosítók listája vesszővel elválasztva van, a paraméterlista végét egy nyíl (->) jelöli.
def myClosure = { a, b, c -> y = a + b + c println y } myClosure(1, 2, 3)
output:
6
Egy lezárás is visszaadhat egy értéket.
def myClosure = { a, b, c -> return (a + b + c) } println(myClosure(1, 2, 3))
output:
6
Ha nem deklarálsz paraméterlistát, Groovy egyetlen implicit paramétert biztosít, melynek neve itA lezárások más lezárásokra is átvihetők, pontosan így működnek az olyan gyűjtési módszerek, mint a each, collectés findAll működik.
Groovy Eszközök
Három fontos eszközt fogunk megvizsgálni, amelyek a csomag részét képezik. Groovy terjesztés:
- groovysh: interaktívan futtatja a kódot a parancssorból.
- groovyKonzol: grafikus ablak az interaktív kódfuttatáshoz.
- klassz: végrehajt Groovy szkriptfájlokat, ugyanúgy, ahogy egy Perl-t vagy Python szkripteket.
Groovysh
- Parancssori shell.
- Segít a kivitelezésben Groovy interaktívan kódolni.
- Lehetővé teszi egyetlen utasítás vagy teljes szkriptek bevitelét.
Az alábbi képernyőképen a groovysh egy soronkénti kifejezés-kiértékelést mutat be.
Groovy Konzol
- Egy Swing interfész, amely minimalistaként működik Groovy fejlesztő szerkesztő.
- Lehetővé teszi az írást és a futtatást Groovy interaktívan kódolni.
- Segít a betöltésben és a futtatásban Groovy szkriptfájlok.
A Groovy Az alábbi konzolon a szkript a felső panelen íródik be, az eredmény pedig az alsó panelen jelenik meg.
Groovy
Az groovy a parancs a futtatott processzor Groovy programok és szkriptek. A forráskódot bájtkóddá fordítja a memóriában, és egy lépésben végrehajtja, így nincs szükség külön fordítási szakaszra. Egyszerű feladatok tesztelésére is használható. Groovy kifejezéseket közvetlenül a terminálból, az alábbiak szerint.
Hol Groovy Valós projektekben használják
A legtöbb fejlesztő találkozik Groovy nem önálló nyelvként, hanem egy már futó eszköz szkriptelési rétegeként. Ha tudjuk, hol jelenik meg, a fenti szintaxis sokkal könnyebben elhelyezhető.
| Szerszám | Hogyan Groovy használják |
|---|---|
| Jenkins | A deklaratív és szkriptelt folyamatfolyamatok egy Groovy A DSL és a megosztott könyvtárak egyszerűek Groovy osztályok. |
| Gradle | Klasszikus build.gradle fájl egy Groovy szkript, ezért olvasható tömörebben, mint egy Maven POM vagy egy Hangya build fájl. |
| SoapUI | Groovy A szkriptlépések és a szkriptállítások dinamikus kérésadatokat és egyéni válaszellenőrzéseket vezérelnek. |
| Spock | A Groovy egy olyan tesztelési keretrendszer, amelynek adott-ha-akkor blokkjait és adattábláit széles körben használják JVM egységtesztekhez. |
| Elasticsearch és Grails | Grails teljes értékű webes alkalmazásokat épít Groovy, és számos adatkezelő eszköz elfogadja Groovy egyedi szkriptekhez. |
In automatizálási tesztelés csapatok számára ez kétszeresen is számít: a csomagot futtató CI-feladat és maguk a tesztek is lehetnek Groovy, így egyetlen nyelv fedi le a pipeline összefűzést és az assertion logikát.
Groovy Vs. Java
| Groovy | Java |
|---|---|
| Az alapértelmezett hozzáférési módosító nyilvános, tehát egy módosító nélküli metódus elérhető az osztályán és csomagján kívül is. | Az alapértelmezett hozzáférés-módosító a package-private, így a módosító nélküli mezők, metódusok és osztályok csak a saját csomagjukon belül láthatók. |
| A getterek és setterek automatikusan generálódnak az osztálytulajdonságokhoz. | A mezők getter és setter metódusait neked kell definiálnod. |
| Groovy lehetővé teszi a változók behelyettesítését az idézőjelek között lévő karakterláncokon belül. | Java nem támogatja a karakterlánc-interpolációt. |
| A típusinformáció megadása opcionális. | A típusra vonatkozó információk kitöltése kötelező. |
| A kijelentéseknek nem kell pontosvesszővel végződniük. | Minden utasítás pontosvesszővel végződik. |
| Groovy automatikusan becsomagol minden szkriptet egy generált Script osztályba. | Szükséged van egy main metódusra ahhoz, hogy egy osztályt végrehajthatóvá tegyél. |
Alapértelmezés szerint minden nyilvános és dinamikus, de @CompileStatic helyreállítja Java-szintű sebesség és ellenőrzés. |
Minden statikusan lefordításra és ellenőrzésre kerül a build során. |
Mítoszok arról Groovy
| Mítosz | Valóság |
|---|---|
| Groovy csak szkripteléshez használható. | Kiválóan alkalmas szkriptelésre, de hétköznapi osztályokká is lefordítható, amelyeket bármilyen JVM alkalmazáson belül szállíthatsz. |
| Groovy a lezárásokról szól, tehát ez csak egy funkcionális programozási nyelv. | Groovy ötleteket kölcsönöz olyan funkcionális nyelvekből, mint a Lisp és a Clojure, de lényegében objektumorientált nyelv marad. |
| Groovy csak tesztvezérelt fejlesztéshez érdemes használni. | Groovy erősen illik a TDD-hez Spockkal, de ez biztosan nem az egyetlen ok a használatára. |
| Csak szükséged van Groovy ha Grálokat szeretnél használni. | A Grails egy hatékony webfejlesztő keretrendszer, de Gradle, Jenkins, és Spock mindannyian használják Groovy nélküle. |
A használat hátrányai Groovy
- JVM és Groovy A szkript indítási ideje lassú, ami korlátozza a gyors operációs rendszer szintű szkriptelésre való használatát.
- Groovy a JVM-központú közösségeken kívül nem széles körben elterjedt.
- Kényelmetlen a használata Groovy egy olyan IDE nélkül, amely megérti a dinamikus funkcióit.
- A dinamikus diszpécser segíthet Groovy a kód lassabb, mint a megfelelője Java kód, hacsak nem jelentkezel
@CompileStatic. - Groovy programoknak több memóriára lehet szükségük, mint a sima Java programokat.
- Ismerete Java gyakorlatilag előfeltétel.
Miután kényelmesen érzi magát Groovy szintaxis, a természetes következő lépés a körülötte lévő ökoszisztéma. Erősítse meg az alapokat a Java oktatói, aztán nézd meg, hogyan Groovy szkriptek vezérlik a buildeket és a telepítéseket Jenkins, hasonlítsa össze az építési eszközöket a Maven és a Apache Ant, és fedezd fel, hogyan Groovy állítások illeszkednek Selenium és API tesztcsomagok.













