Groovy Tutorial sugli script per principianti
โก Riepilogo intelligente
Groovy Script รจ un linguaggio orientato agli oggetti per il Java piattaforma che compila in bytecode JVM. Aggiunge tipi dinamiciping, chiusure e sintassi concisa per Javae alimenta Jenkins oleodotti, Gradle costruisce e SoapUI affermazioni.

Che cos'รจ un Groovy Copione?
Apache Groovy รจ un linguaggio orientato agli oggetti, Java linguaggio di programmazione compatibile con la sintassi costruito per il Java piattaforma. Questo linguaggio dinamico ha molte caratteristiche simili a PythonRuby, Smalltalk e Perl. Groovy il codice sorgente viene compilato in Java bytecode, quindi funziona su qualsiasi piattaforma in cui รจ presente un Java La macchina virtuale รจ installata. Groovy svolge anche molto lavoro dietro le quinte, il che lo rende piรน agile e dinamico rispetto al semplice Java.
A Groovy copione รจ semplicemente un .groovy file contenente dichiarazioni che Groovy avvolge in una classe generata prima di eseguirla. Ecco perchรฉ puoi eseguire un file di una sola riga senza scrivere una classe o un main metodo. Groovy puรฒ quindi essere utilizzato come linguaggio di scripting per il Java piattaforma pur offrendo le funzionalitร aziendali di JavaAggiunge funzionalitร di produttivitร come il supporto DSL, le chiusure e i tipi dinamici opzionalipingA differenza di altre lingue, รจ progettato come complemento di Java, non un sostituto.
Suggerimento: Groovy La versione 5.0 รจ l'attuale versione stabile e ha come target JDK 11 e versioni successive. Groovy La versione 4.0 rimane disponibile per i progetti JDK 8 e Groovy La versione 6.0 รจ ancora in fase alpha per JDK 17. Controlla sempre la tabella dei requisiti di sistema sulla pagina di download ufficiale prima di scegliere una versione.
Perchรฉ Groovy?
Ecco i principali motivi per cui dovresti usare e imparare Groovy:
- Groovy รจ un linguaggio agile e dinamico.
- Si integra perfettamente con tutti quelli esistenti Java oggetti e librerie.
- Sembra facile e naturale Java sviluppatori.
- Il codice รจ piรน conciso e piรน significativo dell'equivalente Java codice.
- Puoi usarlo quanto vuoi all'interno Java applicazioni.
- Funziona con lo standard Java Macchina virtuale, quindi non รจ richiesto un runtime separato.
Groovy Storia
- 2003: Iniziato da James StracHan e Bob McWhiravere.
- 2004: Inviato al Java Procedura comunitaria denominata JSR 241, che รจ stata successivamente ritirata.
- 2005: Riportato in onda track di Jeremy Rayner e Guillaume Laforge.
- 2007: Groovy 1.0 rilasciato.
- 2012: Groovy 2.0 rilasciato.
- 2014: Groovy ร stata rilasciata la versione 2.3 con supporto ufficiale per JDK 8.
- 2015: Groovy รจ diventato un progetto di alto livello presso Apache Software Foundation.
- 2022: Groovy 4.0 rilasciato, con le coordinate Maven spostate a
org.apache.groovy. - 2025: Groovy Versione 5.0 rilasciata per JDK 11 e versioni successive.
Caratteristiche principali dell'app Groovy
- Lettere per liste, mappe, intervalli ed espressioni regolari.
- Multimethods (assegnazione di metodi a runtime) e metaprogrammazione.
- Groovy classi e script sono solitamente memorizzati in
.groovyFile. - Gli script contengono Groovy istruzioni senza alcuna dichiarazione di classe.
- Gli script possono contenere anche definizioni di metodi al di fuori delle definizioni di classe.
- Groovy il codice puรฒ essere compilato e completamente integrato con un tradizionale Java applicazione.
- Supporto a livello di linguaggio per mappe, elenchi ed espressioni regolari.
- Supporto per chiusure, tipo dinamicopinge il protocollo dei meta-oggetti.
- Supporto sia per tipi statici che dinamiciping, oltre al sovraccarico dell'operatore.
- Controllo statico opzionale del tipo tramite
@TypeCheckedand@CompileStaticannotazioni.
Come installare Groovy
Passo 1) Assicurati di averlo Java installato.
Passo 2) Vai su https://groovy.apache.org/download.html e fare clic sul Windows collegamento di installazione.
Nota: รจ anche possibile installare Groovy dal file Zip binario, tramite un gestore di pacchetti come SDKMAN!, Homebrew, Scoop o Chocolatey, oppure come plugin per il tuo Java IDE. In questo Groovy procedura dettagliata ci atterremo alla Windows installatore.
Passo 3) Avvia il programma di installazione scaricato. Seleziona la lingua e fai clic su OK.
Passo 4) Nella schermata di benvenuto, fai clic su AVANTI.
Passo 5) Accetto i termini della licenza.
Passo 6) Seleziona i componenti che desideri installare e fai clic su AVANTI.
Passo 7) Seleziona la directory di installazione e fai clic su AVANTI.
Passo 8) Seleziona la cartella Menu Start e fai clic su AVANTI.
Passo 9) Una volta completata l'installazione, lasciare i percorsi predefiniti e fare clic su AVANTI.
Passo 10) Conferma le opzioni di associazione dei file e fai clic su AVANTI.
Passo 11) Nel menu Start, cerca Groovy Console per confermare l'installazione.
โ ๏ธ Attenzione: Migliori Windows Il programma di installazione รจ un artefatto contribuito dalla comunitร , non una versione ufficiale di Apache. Se la tua organizzazione richiede download di Apache firmati, usa la distribuzione Zip binaria e verifica il suo .asc firma e .sha256 invece del checksum.
Groovy Ciao esempio mondiale
Supponiamo di voler stampare la semplice stringa "Hello World" in JavaIl codice sarebbe simile a questo.
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Produzione:
Hello World
Il codice sopra รจ valido in entrambi Java and Groovy, perchรฉ Groovy accetta quasi tutti Java sintassi. Il vantaggio con Groovy Il vantaggio รจ che si puรฒ eliminare la dichiarazione della classe, il metodo pubblico e la chiamata print completa, ottenendo lo stesso risultato con una sola riga.
println "Hello World"
Produzione:
Hello World
- Non รจ necessario il punto e virgola.
- Non c'รจ bisogno di una classe o di un
mainmetodo. System.out.printlnรจ ridotto aprintln.
Groovy Variabili
In JavaIl binding statico รจ obbligatorio, il che significa che il tipo di una variabile deve essere dichiarato in anticipo.
public class Demo {
public static void main(String[] args) {
int x = 104;
System.out.println(x);
//x = "Guru99";
}
}
Produzione:
104
Nell'esempio precedente, il tipo della variabile viene dichiarato in anticipo utilizzando la parola chiave intSe dovessi dichiarare un numero a virgola mobile, useresti la parola chiave float or double.
Se provi ad assegnare un valore String a un int (rimuovendo il commento dalla riga 5), โโsi otterrร il seguente errore di compilazione.
Demo.java:5: error: incompatible types: String cannot be converted to int x = "Guru99";
In contrasto, Groovy supporta la tipologia dinamicapingLe variabili vengono definite utilizzando la parola chiave defe il tipo non deve essere dichiarato in anticipo. Il runtime determina automaticamente il tipo della variabile, e puoi persino modificarlo in seguito.
def x = 104 println x.getClass() x = "Guru99" println x.getClass()
Produzione:
class java.lang.Integer class java.lang.String
In Groovy ร possibile creare anche stringhe multilinea. Basta assicurarsi di racchiudere la stringa tra virgolette triple.
def x = """Groovy at Guru99""" println x
Produzione:
Groovy at Guru99
Nota: ร ancora possibile utilizzare tipi espliciti come byte, short, inte long in GroovyMa una volta dichiarato esplicitamente il tipo, non รจ possibile modificarlo dinamicamente.
int x = 104 println x x = "Guru99"
Produzione:
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 OperaTors
Un operatore รจ un simbolo che indica al compilatore di eseguire una specifica manipolazione matematica o logica. Groovy supporta le seguenti cinque famiglie di operatori.
- Operatori aritmetici: aggiungere (+), sottrarretract (-), moltiplica (*), dividi (/), modulo (%), incrementa (++), decrementa (โ).
- Operatori relazionali: uguale a (==), diverso da (!=), minore di (<), minore o uguale a (<=), maggiore di (>), maggiore o uguale a (>=).
- Operatori logici: e (&&), oppure (||), non (!).
- Operatori bit a bit: e (&), o (|), OR esclusivo (^), complemento (~).
- Operatori di assegnazione: assegnare (=) e le forme composte (+=), (-=), (*=), (/=), (%=).
Groovy aggiunge alcuni operatori che Java non lo ha, e rimuovono un sacco di codice ripetitivo per il controllo dei valori nulli.
| Operator | Descrizione |
|---|---|
| ?. | Navigazione sicura. Restituisce null invece di generare una NullPointerException quando il lato sinistro รจ null. |
| ?: | Operatore Elvis. Restituisce il lato sinistro se รจ vero, altrimenti il โโlato destro. |
| <=> | Operatore di astronave. Delega a compareTo ed รจ utile all'interno delle closure di ordinamento. |
| ==~ | Corrispondenza con espressione regolare. Restituisce true solo quando l'intera stringa corrisponde al pattern. |
Groovy Loops
In Java, definiresti un ciclo di conteggio come segue.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x++) {
System.out.println(x);
}
}
}
Produzione:
0 1 2 3 4 5
Puoi ottenere lo stesso risultato in Groovy con la upto metodo, che comprende entrambi i limiti.
0.upto(5) { println "$it" }
Produzione:
0 1 2 3 4 5
Qui it รจ il parametro implicito della closure e contiene il valore dell'iterazione corrente. Si consideri il seguente codice.
2.upto(4) { println "$it" }
Produzione:
2 3 4
ร inoltre possibile utilizzare il times metodo. Inizia sempre da 0 e si ferma a un numero prima del numero su cui viene chiamato, quindi servono 6 per stampare da 0 a 5.
6.times { println "$it" }
Produzione:
0 1 2 3 4 5
Ora supponiamo di voler stampare 0, 2 e 4 con un Java per loop.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x=x+2) {
System.out.println(x);
}
}
}
Produzione:
0 2 4
ร possibile utilizzare il step metodo per ottenere lo stesso risultato. Il secondo argomento รจ l'incremento e il primo argomento รจ un limite superiore esclusivo.
0.step(5, 2) { println "$it" }
Produzione:
0 2 4
Groovy Decision Making
Groovy riutilizza il Java istruzioni condizionali e aggiunge una flessibilitร molto maggiore switchLa tabella seguente riassume le opzioni.
| dichiarazione | Descrizione |
|---|---|
| istruzione if | Come in JavaIl corpo dell'istruzione if viene eseguito quando la condizione รจ vera. |
| istruzione if/else | La condizione nell'istruzione if viene valutata per prima. Se รจ vera, vengono eseguite le istruzioni nel blocco if e il blocco else viene saltato. Se รจ falsa, vengono eseguite invece le istruzioni nel blocco else. |
| Istruzione if annidata | Si usa quando รจ necessario testare un'ulteriore condizione all'interno di un blocco if. |
| istruzione switch | Una catena di if-else annidati diventa illeggibile quando ci sono molte condizioni. L'istruzione switch rende la stessa logica piรน facile da leggere. GroovyUn'etichetta di caso puรฒ essere un valore, una classe, un intervallo, un'espressione regolare o una closure. |
| Istruzione switch annidata | Groovy Consente inoltre di inserire un'istruzione switch all'interno di un'altra. |
Groovy Lista
Una struttura di elenco consente di memorizzare una raccolta di elementi di dati. In GroovyUna lista contiene una sequenza di riferimenti a oggetti e conserva la posizione di ciascun elemento in tale sequenza. Un letterale di lista รจ scritto come una serie di oggetti separati da virgole e racchiusi tra parentesi quadre.
Esempi di Groovy liste:
- Un elenco di stringhe:
['Angular', 'Nodejs'] - Elenco di riferimenti a oggetti misti:
['Groovy', 2, 4, 2.6] - Un elenco di valori interi:
[16, 17, 18, 19] - Una lista vuota:
[]
I seguenti metodi di elenco sono disponibili in Groovy.
| Metodo | Descrizione |
|---|---|
| Inserisci() | Aggiunge un nuovo valore alla fine dell'elenco. |
| contiene() | Restituisce true se la lista contiene un determinato valore. |
| ottenere () | Restituisce l'elemento nella posizione specificata. |
| รจ vuoto() | Restituisce true se la lista non contiene elementi. |
| meno() | Crea una nuova lista composta dagli elementi della lista originale, escludendo quelli specificati nella raccolta data. |
| piรน() | Crea una nuova lista composta dagli elementi dell'originale insieme a quelli presenti nella collezione specificata. |
| pop () | Rimuove l'ultimo elemento dalla lista e lo restituisce. |
| rimuovere() | Rimuove l'elemento nella posizione specificata. |
| inversione() | Crea una nuova lista che inverte gli elementi della lista originale. |
| dimensione() | Restituisce il numero di elementi presenti nella lista. |
| ordinare() | Restituisce una copia ordinata della lista. |
Considera quanto segue Groovy esempio di script.
def y = ["Guru99", "is", "migliori", "for", "Groovy"] println y y.add("Learning") println(y.contains("is")) println(y.get(2)) println(y.pop())
Produzione:
[Guru99, is, migliori, for, Groovy] true migliori Learning
La prima riga stampa l'elenco originale di cinque elementi, perchรฉ add() non รจ ancora stato eseguito. get(2) restituisce โmiglioriโ da Groovy Gli elenchi sono indicizzati a partire da zero e pop() restituisce "Apprendimento" perchรฉ quell'elemento รจ stato aggiunto per ultimo.
Groovy Maps
A Groovy Una mappa รจ una raccolta di coppie chiave-valore. Le chiavi non necessitano di virgolette quando sono semplici identificatori, il che mantiene i letterali della mappa molto compatti.
Esempi di Groovy mappe:
[tutorial: 'Java', language: 'Groovy']รจ una raccolta di due coppie chiave-valore.[:]rappresenta una mappa vuota.
Ecco un elenco dei metodi di mappatura disponibili in Groovy.
| Metodo | Descrizione |
|---|---|
| contieneChiave() | Verifica se la mappa contiene la chiave specificata. |
| ottenere () | Cerca la chiave nella mappa e restituisce il valore corrispondente. Se non viene trovata alcuna voce, restituisce null. |
| mazzo di chiavi() | Restituisce l'insieme delle chiavi presenti nella mappa. |
| Mettere() | Associa il valore specificato alla chiave indicata. Se la mappa conteneva giร una mappaping Per quella chiave, il vecchio valore viene sostituito. |
| dimensione() | Restituisce il numero di mappa chiave-valorepings. |
| valori () | Restituisce una vista della raccolta dei valori. |
Groovy esempio:
def y = [fName:'Jen', lName:'Cruise', sex:'F'] print y.get("fName")
Produzione:
Jen
Groovy chiusure
A Groovy Una closure รจ un blocco di codice incapsulato in un oggetto. Si comporta come un metodo o una funzione, ma puรฒ essere memorizzata in una variabile e passata come qualsiasi altro valore.
Esempio di una chiusura semplice:
def myClosure = { println "My First Closure" } myClosure()
Produzione:
My First Closure
Una closure puรฒ accettare parametri. L'elenco degli identificatori รจ separato da virgole, con una freccia (->) che indica la fine dell'elenco dei parametri.
def myClosure = { a, b, c -> y = a + b + c println y } myClosure(1, 2, 3)
Produzione:
6
Una closure puรฒ anche restituire un valore.
def myClosure = { a, b, c -> return (a + b + c) } println(myClosure(1, 2, 3))
Produzione:
6
Quando non si dichiara un elenco di parametri, Groovy fornisce un singolo parametro implicito denominato it. Le closure possono anche essere passate ad altre closure, ed รจ esattamente cosรฌ che funzionano i metodi di raccolta come each, collecte findAll lavoro.
Groovy Strumenti
Esamineremo tre strumenti importanti forniti con Groovy distribuzione:
- fantastico: Esegue il codice in modo interattivo dalla riga di comando.
- groovyConsole: Una finestra grafica per l'esecuzione interattiva del codice.
- fantastico: esegue Groovy file di script, nello stesso modo in cui eseguiresti un Perl o Python script.
Groovysh
- Una shell a riga di comando.
- Ti aiuta a eseguire Groovy codice interattivo.
- Consente di inserire singole istruzioni o interi script.
Lo screenshot qui sotto mostra groovysh che valuta le espressioni una riga alla volta.
Groovy consolle
- Un'interfaccia Swing che funge da minimale Groovy redattore dello sviluppo.
- Ti consente di scrivere ed eseguire Groovy codice interattivo.
- Ti aiuta a caricare ed eseguire Groovy file di script.
Nel Groovy Nella console sottostante, lo script viene digitato nel riquadro superiore e il risultato appare nel riquadro inferiore.
Groovy
Migliori groovy il comando รจ il processore che esegue Groovy programmi e script. Compila il codice sorgente in bytecode in memoria e lo esegue in un unico passaggio, quindi non รจ necessaria una fase di compilazione separata. Puรฒ anche essere utilizzato per testare semplici Groovy espressioni direttamente dal terminale, come mostrato di seguito.
Dove Groovy Viene utilizzato in progetti reali
La maggior parte degli sviluppatori incontra Groovy Non come linguaggio a sรฉ stante, ma come livello di scripting all'interno di uno strumento giร in esecuzione. Sapere dove compare rende molto piรน semplice inserire la sintassi di cui sopra.
| Chiavetta | Come Groovy viene usato |
|---|---|
| Jenkins | Le pipeline dichiarative e scriptate sono scritte in un Groovy DSL e le librerie condivise sono semplici Groovy classi. |
| Gradle | Il classico build.gradle file รจ un file Groovy script, motivo per cui si legge in modo piรน compatto di un Maven POM o un Formica File di compilazione. |
| SoapUI | Groovy Le fasi dello script e le asserzioni dello script gestiscono i dati dinamici delle richieste e i controlli personalizzati delle risposte. |
| Spock | A Groovy Framework di test i cui blocchi given-when-then e tabelle di dati sono ampiamente utilizzati per i test unitari della JVM. |
| Elasticsearch e Grails | Grails crea applicazioni web complete su Groovye diversi strumenti di dati accettano Groovy per script personalizzati. |
In test di automazione team questo รจ importante due volte: il job CI che esegue la suite e i test stessi possono essere entrambi Groovy, quindi un singolo linguaggio copre la logica di collegamento della pipeline e la logica di asserzione.
Groovy Vs. Java
| Groovy | Java |
|---|---|
| Il modificatore di accesso predefinito รจ pubblico, quindi un metodo senza modificatore รจ accessibile al di fuori della sua classe e del suo pacchetto. | Il modificatore di accesso predefinito รจ package-private, quindi i campi, i metodi e le classi senza modificatore sono visibili solo all'interno del loro pacchetto. |
| I metodi getter e setter vengono generati automaticamente per le proprietร della classe. | ร necessario definire autonomamente i metodi getter e setter per i campi. |
| Groovy Consente la sostituzione di variabili all'interno di stringhe racchiuse tra virgolette doppie. | Java non supporta l'interpolazione di stringhe. |
| Le informazioni sul tipo sono facoltative. | Le informazioni sul tipo sono obbligatorie. |
| Le frasi non devono necessariamente terminare con un punto e virgola. | Ogni frase termina con un punto e virgola. |
| Groovy incapsula automaticamente ogni script in una classe Script generata. | Per rendere una classe eseguibile, รจ necessario un metodo main. |
Tutto รจ pubblico e dinamico per impostazione predefinita, ma @CompileStatic Ripristina Java-velocitร e verifica del livello. |
Tutto viene compilato staticamente e verificato in fase di compilazione. |
Miti su Groovy
| Mito | Realtร |
|---|---|
| Groovy puรฒ essere utilizzato solo per la creazione di script. | ร eccellente per lo scripting, ma viene anche compilato in classi ordinarie che รจ possibile utilizzare in qualsiasi applicazione JVM. |
| Groovy ร incentrato sulle closure, quindi รจ semplicemente un linguaggio di programmazione funzionale. | Groovy Prende in prestito idee da linguaggi funzionali come Lisp e Clojure, ma rimane essenzialmente un linguaggio orientato agli oggetti. |
| Groovy ร utile solo per lo sviluppo guidato dai test. | Groovy รจ un'ottima soluzione per il TDD con Spock, ma non รจ certo l'unico motivo per utilizzarla. |
| Hai solo bisogno Groovy se vuoi usare Grails. | Grails รจ un potente framework per lo sviluppo web, ma Gradle, Jenkinse Spock usano tutti Groovy senza di essa. |
Contro dell'utilizzo Groovy
- JVM e Groovy L'avvio dello script รจ lento, il che ne limita l'utilizzo per la creazione rapida di script a livello di sistema operativo.
- Groovy Non รจ ampiamente adottato al di fuori delle comunitร incentrate sulla JVM.
- ร scomodo da usare Groovy senza un IDE che ne comprenda le caratteristiche dinamiche.
- Il dispacciamento dinamico puรฒ rendere Groovy codice piรน lento rispetto all'equivalente Java codice a meno che non si applichi
@CompileStatic. - Groovy i programmi potrebbero aver bisogno di piรน memoria rispetto al semplice Java programmi.
- Conoscenza di Java รจ di fatto un prerequisito.
Una volta che ti senti a tuo agio con Groovy sintassi, il passo successivo naturale รจ l'ecosistema che la circonda. Rafforza i fondamenti con la Java lezione, quindi guarda come Groovy gli script guidano le build e le distribuzioni in Jenkins, confronta gli strumenti di compilazione con Maven and Anti Apachee scoprire come Groovy le affermazioni rientrano in Selenium e suite di test API.













