Groovy Scripttutorial for begyndere
Hvad er en Groovy Manuskript?
Apache Groovy er en objektorienteret og Java syntaks kompatibelt programmeringssprog bygget til Java platform. Dette dynamiske sprog har mange funktioner, der ligner Python, Ruby, Smalltalk og Pero. Groovy kildekoden bliver kompileret til Java Bytekode, sรฅ den kan kรธre pรฅ enhver platform, hvor JRE er installeret. Groovy udfรธrer ogsรฅ en masse opgaver bag scenen, der gรธr det mere smidigt og dynamisk.
Groovy sprog kan bruges som scriptsprog til Java platform. Det er nรฆsten som en super version af Java som tilbyder Java's virksomhedskapacitet. Det tilbyder ogsรฅ mange produktivitetsfunktioner som DSL-understรธttelse, lukninger og dynamisk indtastning. I modsรฆtning til nogle andre sprog er det designet som en ledsager, ikke en erstatning for Java.
Hvorfor Groovy?
Her er vigtige grunde til, hvorfor du bรธr bruge og lรฆre Groovy-
- Groovy er et smidigt og dynamisk sprog
- Problemfri integration med alle eksisterende Java genstande og biblioteker
- Fรธles nemt og naturligt at Java udviklere
- Mere kortfattet og meningsfuld kode sammenlignet med Java
- Du kan bruge den lige sรฅ meget eller sรฅ lidt, som du har lyst til Java apps
Groovy Historie
- 2003: Udviklet af Bob McWhirter & James Strachan
- 2004: Indgรฅet i JSR 241, men den blev forladt
- 2005: Bragt tilbage af Jeremy Rayner & Guillaume Laforge
- 2007: Groovy udgave 1.0
- 2012: Groovy udgave 2
- 2014: Groovy version 2.3 (officiel support givet til JDK 8)
- 2015: Groovy blev et projekt hos Apache Software Foundation
Funktioner af Groovy
- Liste, kort, rรฆkkevidde, bogstaver i regulรฆre udtryk
- Multimetode og metaprogrammering
- Groovy klasser og scripts gemmes normalt i .groovy-filer
- Scripts indeholder Groovy erklรฆringer uden nogen klasseerklรฆring.
- Scripts kan ogsรฅ indeholde metodedefinitioner uden for klassedefinitioner.
- Det kan kompileres og fuldt integreres med traditionelle Java ansรธgning.
- Understรธttelse af sprogniveau til kort, lister, regulรฆre udtryk
- Understรธtter lukninger, dynamisk indtastning, metaobjektprotokol
- Understรธttelse af statisk og dynamisk skrivning og operatรธroverbelastning
- Ordret erklรฆring for lister (arrays), kort, omrรฅder og regulรฆre udtryk
Sรฅdan installeres Groovy
Trin 1) Sรธrg for, at du har Java installeret.
Trin 2) Gรฅ til http://groovy-lang.org/download.html og klik pรฅ installer.
Bemรฆrk: Du kan ogsรฅ installere Groovy ved hjรฆlp af zip-filen eller som en Eclipse IDE. I denne Groovy tutorial, vil vi holde os til Windows Installer
Trin 3) Start det downloadede installationsprogram. Vรฆlg sprog, og klik pรฅ OK
Trin 4) Lancering. Klik pรฅ NรSTE pรฅ velkomstskรฆrmen
Trin 5) Accepter licensbetingelserne
Trin 6) Vรฆlg de komponenter, du vil installere, og klik pรฅ NรSTE
Trin 7) Vรฆlg Installation Directory, og klik pรฅ NรSTE
Trin 8) Vรฆlg Start Menu Mappe, og klik pรฅ NรSTE
Trin 9) Nรฅr installationen er fรฆrdig, lad stierne standard og klik pรฅ NรSTE
Trin 10) Klik pรฅ NรSTE
Trin 11) I startmenuen sรธg efter Groovy Konsol
Groovy Hej verdenseksempel
Overvej, at vi vil udskrive en simpel streng "Hello World" i Java. Koden til at opnรฅ strengen Groovy hej verden ville vรฆre
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Ovenstรฅende kode er gyldig i begge Java og Groovy as Groovy er et supersรฆt af Java. Men fordelen med Groovy er, at vi kan gรธre os op med klasseoprettelse, offentlig metodeoprettelse osv. og opnรฅ det samme output med en enkelt linjekode som fรธlger:
println "Hello World."
Der er ikke behov for semikolon
Der er ikke behov for parenteser
System.out.println reduceres til println
Groovy Variabler
In Java, statisk binding er obligatorisk. Det 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";
}
}
I ovenstรฅende eksempel pรฅ dette Groovy tutorial, type variabel (heltal) erklรฆres pรฅ forhรฅnd ved hjรฆlp af nรธgleordet "int". Hvis du skulle angive et flydende decimaltal, bruger du nรธgleordet flydende.
Hvis du forsรธger at tildele en strengvรฆrdi til en int (frakommenteringslinje #5), fรฅr du fรธlgende fejl
Demo.java:5: error: incompatible types: String cannot be converted to int x = "Guru99";
I modsรฆtning, Groovy understรธtter dynamisk typning. Variabler defineres ved hjรฆlp af nรธgleordet "def", og typen af โโen variabel behรธver ikke at blive erklรฆret pรฅ forhรฅnd. Compileren finder ud af variabeltypen under kรธrsel, og du kan endda variabeltypen.
Overvej fรธlgende groovy eksempel,
def x = 104 println x.getClass() x = "Guru99" println x.getClass()
Output:
class java.lang.Integer class java.lang.String
In Groovy, kan du oprette flerlinjede strenge. Bare sรธrg for, at du omslutter strengen i tredobbelte anfรธrselstegn.
def x = """Groovy at Guru99""" println x
Output:
Groovy at Guru99
Bemรฆrk: Du kan stadig variable typer som byte, kort, int, lang osv. med Groovy. Men du kan ikke รฆndre variabeltypen dynamisk, som du eksplicit har erklรฆret den.
Overvej fรธlgende kode:
int x = 104 println x x = "Guru99"
Det giver fรธlgende fejl
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)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Command exited with non-zero status 1
Groovy-Operatorer
En operator er et symbol, der fortรฆller compileren at udfรธre visse matematiske eller logiske manipulationer.
Groovy har fรธlgende fem typer operatรธrer โ
- Aritmetiske operatorer: Add (+), Subtrahere (-), Multiplikation (*), Division(/)
- Relationelle operatorer: lig med (==), Ikke lig med (!=), Less end (<) Less end eller lig med (<=), Stรธrre end (>), Stรธrre end eller lig med (>=)
- Logiske operatorer: Og (&&), Eller(||), Ikke(!)
- Bitvise operatorer: And(&), Or(|), (^), Xor eller Exclusive-or operator
- Tildelingsoperatorer: Negationsoperator (~)
Groovy- Slรธjfer
In Java, ville du definere en lรธ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
Du kan opnรฅ det samme output i Groovy bruger op til sรธgeord
0.upto(4) {println "$it"}
Du fรฅr samme output som ovenfor. $it er en lukning, der giver vรฆrdien af โโden aktuelle slรธjfe.
Overvej fรธlgende kode
2.upto(4) {println "$it"}
Det giver et output
2 3 4
Du kan ogsรฅ bruge nรธgleordet "tider" for at fรฅ det samme output
5.times{println "$it"}
Overvej, du vil udskrive 0,2,4 med for slรธjfe ind Java
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 trinmetoden til det samme
0.step(7,2){println "$it"}
Groovy- Beslutningstagning
| Erklรฆringer | Bedrag |
|---|---|
| hvis Erklรฆring | Som i Java, hvis-sรฆtningen udfรธres, hvis betingelsen er sand. |
| if/else-erklรฆring | I if/else-sรฆtningen evalueres fรธrst en betingelse i if-sรฆtningen. Hvis betingelsen er sand, udfรธres sรฆtningerne derefter. Den stopper fรธr den anden tilstand og gรฅr ud af lรธkken. Men hvis betingelsen er falsk, udfรธres sรฆtningerne i else-sรฆtningsblokken. Sรฅ forlader den lรธkken. |
| Indlejret hvis-erklรฆring | Det bruges, nรฅr der er et krav om at have flere if-sรฆtninger. |
| Skift erklรฆring | Den indlejrede if-else-sรฆtning kan blive ulรฆselig, nรฅr du har flere betingelser. For at gรธre koden mere lรฆsbar bruges switch statement. |
| Indlejret switch-erklรฆring | In Groovy er det ogsรฅ muligt at bruge indlejrede switch-sรฆtninger. |
Groovy Liste
Listestruktur giver dig mulighed for at gemme en samling af dataelementer. I en Groovy programmeringssprog, indeholder listen en sekvens af objektreferencer. Den viser ogsรฅ en position i sekvensen. En listeliteral prรฆsenteres som en rรฆkke objekter adskilt af kommaer og omgivet af firkantede parenteser.
Eksempel pรฅ Grrovy liste:
En liste over strenge- ['Angular', 'Nodejs,]
En liste over objektreferencer โ ['Groovy', 2,4 2.6]
En liste over heltalsvรฆrdier โ [16, 17, 18, 19]
En tom liste- [ ]
Fรธlgende er listemetoder, der er tilgรฆngelige i Groovy:
| Metoder | Beskrivelse |
|---|---|
| tilfรธje() | Giver dig mulighed for at tilfรธje den nye vรฆrdi til slutningen af โโdenne liste. |
| indeholder() | Returnerer sand, hvis denne liste indeholder en bestemt vรฆrdi. |
| fรฅ() | Returnerer elementet pรฅ den bestemte position |
| er tom() | Returnerer sand vรฆrdi, hvis Listen ikke indeholder nogen elementer |
| minus() | Denne kommando giver dig mulighed for at oprette en ny liste, der er sammensat af elementerne fra originalen undtagen dem, der er specificeret i samlingen. |
| plus() | Giver dig mulighed for at oprette en ny liste sammensat af elementerne fra originalen sammen med nรฆvnt i samlingen. |
| pop () | Fjerner det sidste element fra listen |
| fjerne() | Fjerner elementet pรฅ den specifikke position |
| baglรฆns() | Opret en ny liste, som vender elementerne fra den oprindelige liste |
| stรธrrelse() | Returnerer antallet af elementer i denne liste |
| sortere() | Returnerer en sorteret kopi |
Overvej fรธlgende Groovy script eksempel
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
Groovy Maps
Et kort Groovy er en samling af nรธglevรฆrdipar
Eksempler pรฅ Groovy kort:
- [Tutorial: 'Java, Tutorial: 'Groovy] โ Samling af nรธgle-vรฆrdi-par, som har Tutorial som nรธgle og deres respektive vรฆrdier
- [ : ] Reprรฆsenter et tomt kort
Her er en liste over tilgรฆngelige kortmetoder i Groovy.
| Metoder | Beskrivelse |
|---|---|
| indeholder nรธgle() | Tjek, at kortet indeholder denne nรธgle eller ej? |
| fรฅ() | Denne kommando slรฅr nรธglen op i dette kort og returnerer den tilsvarende vรฆrdi. Hvis du ikke finder nogen post pรฅ dette kort, vil det returnere null. |
| keySet () | Gรธr det muligt at finde et sรฆt nรธgler pรฅ dette kort |
| sรฆtte() | Knytter den angivne vรฆrdi til den givne nรธgle i dette kort. Hvis kortet tidligere indeholdt en tilknytning til denne nรธgle. Sรฅ vil den gamle vรฆrdi blive erstattet af den angivne vรฆrdi. |
| stรธrrelse() | Returnerer antallet af nรธglevรฆrdi-tilknytninger. |
| vรฆrdier () | Denne kommando returnerer en samlingsvisning af vรฆrdierne. |
Groovy Eksempel:
def y = [fName:'Jen', lName:'Cruise', sex:'F']
print y.get("fName")
Produktion
Jen
Groovy- Lukninger
En groovy lukning er et stykke kode pakket ind som et objekt. Det fungerer som en metode eller en funktion.
Eksempel pรฅ simpel lukning
def myClosure = {
println "My First Closure"
}
myClosure()
Output:
My First Closure
En lukning kan acceptere parametre. Listen over identificerer er komma adskilt 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 returnere en vรฆrdi.
def myClosure = {
a,b,c->
return (a+b+c)
}
println(myClosure(1,2,3))
Output:
6
Der er mange indbyggede lukninger som "It", "identitet" osv. Lukninger kan tage andre lukninger som parametre.
Groovy Vs. Java
| Groovy | Java |
|---|---|
| In Groovy, standardadgangsspecifikationen er offentlig. Det betyder, at en metode uden nogen specificeret adgangsmodifikator er offentlig og tilgรฆngelig uden for klasse- og pakkegrรฆnser. | In Java, er standardadgangsmodifikatoren en pakke, dvs. hvis du ikke angiver adgangsmodifikator for felter, metoder eller klasse, bliver den pakkeprivat, |
| Getters og sรฆttere genereres automatisk for klassemedlemmer. | Java, skal du definere getters og seters metode for felter |
| Groovy tillader variabel substitution ved hjรฆlp af dobbelte anfรธrselstegn med strenge. | Java understรธtter ikke variabel substitution. |
| Indtastning af oplysninger er valgfrit. | Indtastning af oplysninger er obligatorisk i Java. |
| Groovy det er ikke nรธdvendigt at slutte med semikolon. | In Java, hver sรฆtning ender med et semikolon. |
| Groovy er automatisk en indpakningsklasse kaldet Script for hvert program | In Java, skal du bruge hovedmetoden for at gรธre en klasse eksekverbar. |
Myter om Groovy
| Myte | Reality |
|---|---|
| Vi kan bruge Groovy kun til scripting. | Det kan bruges til scripting. Du kan dog udfรธre mange andre opgaver udover det. |
| Groovy handler om lukninger. "Det er bare funktionelt programmeringssprog". | Groovy adopterer fra funktionelle programmeringssprog som Lisp eller Closure. |
| Groovy er et ideelt valg, hvis du vil lave TDD | Dette udsagn er sandt. Det er dog bestemt ikke den eneste grund til at bruge Groovy. |
| Du kan bruge Groovy kun hvis du vil bruge Grails. | Grails er en kraftfuld webudviklingsramme.
Men Groovy tilbyder mere end det. |
Ulemper ved at bruge Groovy
- JVM og Groovy script-starttiden er langsom, hvilket begrรฆnser scripting pรฅ OS-niveau
- Groovy er ikke helt accepteret i andre fรฆllesskaber.
- Det er ikke praktisk at bruge Groovy uden at bruge IDE
- Groovy kan vรฆre langsommere, hvilket รธgede udviklingstiden
- Groovy kan have brug for meget hukommelse
- Kendskab til Java er bydende nรธdvendigt.
Groovy Vรฆrktรธjer
Vi vil diskutere 3 vigtige vรฆrktรธjer i dette Groovy script tutorial
1. groovysh: Udfรธrer kode interaktivt.
2. groovyConsole: GUI til interaktiv kodeudfรธrelse
3. groovy: Udfรธrer groovy scripts. Du kan bruge det ligesom Perl, PythonOsv
Groovysh
- kommandolinje shell
- Hjรฆlper dig med at udfรธre Groovy kode interaktivt
- Tillader indtastning af udsagn eller hele scripts
Groovy konsol
- Swing interface, der fungerer som en minimal Groovy udviklingsredaktรธr.
- Giver dig mulighed for at interagere Groovy kode
- Hjรฆlper dig med at indlรฆse og kรธre Groovy script filer
Groovy
Det er processoren, der udfรธrer Groovy programmer og scripts. U
Det kan bruges til at teste enkelt Groovy udtryk.
Resumรฉ
- Groovy er et objektorienteret programmeringssprog, der bruges til Java perron
- Groovy scripting tilbyder problemfri integration med alle eksisterende Java genstande og biblioteker
- Bob McWhirter & James Strachan udviklede groovy i 2003
- Liste, kort, rรฆkkevidde, bogstaver i regulรฆre udtryk er vigtige trรฆk ved Groovy
- Fire typer operatรธrer understรธtter ved Groovy er 1. Relationelle 2.Logiske 3. Bitvise 4. Tildeling
- Groovy udfรธrt beslutningstagning ved hjรฆlp af if, if/else, Nested if, switch, Netsted switch statements
- Listestruktur giver dig mulighed for at gemme en samling af dataelementer
- Et kort Groovy er en samling af nรธglevรฆrdipar
- In Groovy, Getters og settere genereres automatisk for klassemedlemmer
- In Java, kan du bruge metoden give getters og setters til felter
- Den stรธrste myte om Groovy er, at den kun kan bruges til scripting, som ikke er korrekt
- Nogen tid Groovy kan vรฆre langsommere, hvilket รธgede udviklingstiden
- Tre Groovy Vรฆrktรธjer er: groovysh som eksekverer kode, groovy Console som er GUI til interaktiv kodeudfรธrelse og groovy som eksekverer scripts













