Groovy Poradnik skryptowy dla początkujących
⚡ Inteligentne podsumowanie
Groovy Skrypt jest obiektowo zorientowanym językiem dla Java Platforma, która kompiluje się do bajtkodu JVM. Dodaje dynamiczneping, zamknięcia i zwięzła składnia Javai to daje moc Jenkins rurociągi, Gradle buduje i SoapUI twierdzenia.
Czym są sterowniki Groovy Scenariusz?
Apache Groovy jest obiektowo zorientowany, Java język programowania zgodny ze składnią, stworzony dla Java platforma. Ten dynamiczny język ma wiele funkcji podobnych do Python, Ruby, Smalltalk i Perl. Groovy kod źródłowy jest kompilowany do Java bajtkod, więc działa na każdej platformie, na której Java Maszyna wirtualna jest zainstalowana. Groovy wykonuje również wiele pracy za kulisami, co sprawia, że wydaje się bardziej zwinny i dynamiczny niż zwykły Java.
A Groovy scenariusz jest po prostu .groovy plik zawierający oświadczenia, które Groovy zawija wygenerowaną klasę przed jej uruchomieniem. Dlatego możesz wykonać plik jednowierszowy bez pisania klasy lub main Metoda. Groovy może być zatem używany jako język skryptowy dla Java platformę, oferując jednocześnie możliwości przedsiębiorstwa JavaDodaje funkcje zwiększające produktywność, takie jak obsługa DSL, zamknięcia i opcjonalna dynamicznapingW przeciwieństwie do niektórych innych języków, jest on zaprojektowany jako dodatek do Java, nie jest jego zamiennikiem.
💡 Wskazówka: Groovy 5.0 to najnowsza stabilna wersja przeznaczona dla JDK 11 i nowszych. Groovy Wersja 4.0 pozostaje dostępna dla projektów JDK 8 i Groovy Wersja 6.0 JDK 17 jest wciąż w fazie alfa. Przed wyborem wersji zawsze sprawdź tabelę wymagań systemowych na oficjalnej stronie pobierania.
Czemu Groovy?
Oto główne powody, dla których warto korzystać z tej funkcji i się jej uczyć Groovy:
- Groovy jest zwinnym i dynamicznym językiem.
- Bezproblemowo integruje się ze wszystkimi istniejącymi Java obiekty i biblioteki.
- Wydaje się to łatwe i naturalne Java programistów.
- Kod jest bardziej zwięzły i bardziej znaczący niż odpowiednik Java kod.
- Możesz używać go w dowolnej ilości, w zależności od potrzeb Java aplikacji.
- Działa na standardzie Java Maszyna wirtualna, więc nie jest wymagane żadne osobne środowisko wykonawcze.
Groovy History
- 2003: Rozpoczęte przez Jamesa S.tracHan i Bob McWhirter.
- 2004: Złożono do Java Proces Społeczny jako JSR 241, który później został wycofany.
- 2005: Przywrócony tracautorstwa Jeremy'ego Raynera i Guillaume'a Laforge'a.
- 2007: Groovy 1.0 wydany.
- 2012: Groovy 2.0 wydany.
- 2014: Groovy Wersja 2.3 została wydana z oficjalnym wsparciem dla JDK 8.
- 2015: Groovy stał się projektem najwyższego poziomu w firmie Apache Software Foundation.
- 2022: Groovy Wydano wersję 4.0, w której współrzędne Mavena zostały przeniesione do
org.apache.groovy. - 2025: Groovy Wydano wersję 5.0 dla JDK 11 i nowszych.
Cechy Groovy
- Literały listy, mapy, zakresu i wyrażeń regularnych.
- Multimetody (dysponowanie metod w czasie wykonywania) i metaprogramowanie.
- Groovy klasy i skrypty są zwykle przechowywane w
.groovyakta. - Skrypty zawierają Groovy instrukcje bez deklaracji klasy.
- Skrypty mogą także zawierać definicje metod poza definicjami klas.
- Groovy kod można skompilować i w pełni zintegrować z tradycyjnym Java aplikacji.
- Obsługa map, list i wyrażeń regularnych na poziomie języka.
- Wsparcie dla zamknięć, dynamiczny typingoraz protokół meta-obiektu.
- Wsparcie dla statycznych i dynamicznych typówpingoraz przeciążanie operatora.
- Opcjonalne sprawdzanie typu statycznego poprzez
@TypeCheckedoraz@CompileStaticadnotacje.
Jak zainstalować Groovy
Krok 1) Upewnij się, że masz Java zainstalowany.
Krok 2) Iść do https://groovy.apache.org/download.html i kliknij Windows łącze do instalatora.
Uwaga: możesz także zainstalować Groovy z pliku binarnego ZIP, za pośrednictwem menedżera pakietów, takiego jak SDKMAN!, Homebrew, Scoop lub Chocolatey, lub jako wtyczkę do Twojego Java IDE. W tym Groovy przewodnik będziemy się trzymać Windows instalator.
Krok 3) Uruchom pobrany instalator. Wybierz język i kliknij OK.
Krok 4) Na ekranie powitalnym kliknij DALEJ.
Krok 5) Zgadzam się z warunkami licencji.
Krok 6) Wybierz komponenty, które chcesz zainstalować i kliknij DALEJ.
Krok 7) Wybierz katalog instalacyjny i kliknij DALEJ.
Krok 8) Wybierz folder Menu Start i kliknij DALEJ.
Krok 9) Po zakończeniu instalacji pozostaw domyślne ścieżki i kliknij DALEJ.
Krok 10) Potwierdź opcje skojarzenia plików i kliknij DALEJ.
Krok 11) W menu Start wyszukaj Groovy Konsola do potwierdzenia instalacji.
⚠️ Ostrzeżenie: Windows Installer to artefakt stworzony przez społeczność, a nie oficjalna wersja Apache. Jeśli Twoja organizacja wymaga podpisanych plików do pobrania Apache, użyj binarnej dystrybucji ZIP i zweryfikuj jej .asc podpis i .sha256 zamiast tego suma kontrolna.
Groovy Przykład Hello World
Załóżmy, że chcesz wydrukować prosty ciąg „Witaj świecie” w JavaKod wyglądałby tak.
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Wyjście:
Hello World
Powyższy kod jest prawidłowy w obu przypadkach Java oraz Groovy, Ponieważ Groovy akceptuje prawie wszystkie Java składnia. Zaleta z Groovy polega na tym, że można pominąć deklarację klasy, metodę publiczną i wywołanie w pełni kwalifikowanej instrukcji print i uzyskać ten sam wynik za pomocą jednej linii.
println "Hello World"
Wyjście:
Hello World
- Nie ma potrzeby stosowania średnika.
- Nie ma potrzeby żadnej klasy ani
mainMetoda. System.out.printlnjest zredukowana doprintln.
Groovy Zmienne
In Java, wiązanie statyczne jest obowiązkowe, co oznacza, że typ zmiennej musi być zadeklarowany z góry.
public class Demo {
public static void main(String[] args) {
int x = 104;
System.out.println(x);
//x = "Guru99";
}
}
Wyjście:
104
W powyższym przykładzie typ zmiennej jest deklarowany z góry za pomocą słowa kluczowego intJeśli chcesz zadeklarować liczbę zmiennoprzecinkową, użyjesz słowa kluczowego float or double.
Jeśli próbujesz przypisać wartość ciągu do int (odkomentuj linię 5), pojawi się następujący błąd kompilacji.
Demo.java:5: error: incompatible types: String cannot be converted to int x = "Guru99";
W przeciwieństwie, Groovy obsługuje dynamiczny typpingZmienne definiuje się za pomocą słowa kluczowego def, a typ nie musi być deklarowany z góry. Środowisko wykonawcze ustala typ zmiennej, a Ty możesz go później zmienić.
def x = 104 println x.getClass() x = "Guru99" println x.getClass()
Wyjście:
class java.lang.Integer class java.lang.String
In Groovy Możesz również tworzyć ciągi wielowierszowe. Pamiętaj tylko, aby ująć ciąg w potrójne cudzysłowy.
def x = """Groovy at Guru99""" println x
Wyjście:
Groovy at Guru99
Uwaga: Nadal możesz używać jawnych typów, takich jak byte, short, int, long in Groovy. Ale gdy już zadeklarujesz typ jawnie, nie będziesz mógł go zmienić dynamicznie.
int x = 104 println x x = "Guru99"
Wyjście:
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 Operatorsy
Operator to symbol nakazujący kompilatorowi wykonanie określonej operacji matematycznej lub logicznej. Groovy obsługuje następujące pięć rodzin operatorów.
- Operatory arytmetyczne: dodaj (+), subtract (-), mnożenie (*), dzielenie (/), moduł (%), zwiększanie (++), zmniejszanie (–).
- Operatory relacyjne: równy (==), nierówny (!=), mniejszy niż (<), mniejszy lub równy (<=), większy niż (>), większy lub równy (>=).
- Operatory logiczne: i (&&), lub (||), nie (!).
- Operatory bitowe: i (&), lub (|), wyłączne lub (^), uzupełnienie (~).
- Operatory przypisania: przypisz (=) i formy złożone (+=), (-=), (*=), (/=), (%=).
Groovy dodaje kilku operatorów, którzy Java nie ma i usuwają wiele szablonowych elementów sprawdzających wartość null.
| OperaTor | OPIS |
|---|---|
| ?. | Bezpieczna nawigacja. Zwraca wartość null zamiast zgłaszać wyjątek NullPointerException, gdy lewa strona jest nullem. |
| ?: | Operator Elvisa. Zwraca lewą stronę, jeśli jest prawdziwa, w przeciwnym razie zwraca prawą stronę. |
| <=> | Operator statku kosmicznego. Delegaci do compareTo i są przydatni w domknięciach sortowania. |
| ==~ | Dopasowanie wyrażenia regularnego. Zwraca wartość true tylko wtedy, gdy cały ciąg pasuje do wzorca. |
Groovy Metalowe ramki
In Java, zdefiniuj pętlę zliczającą w następujący sposób.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x++) {
System.out.println(x);
}
}
}
Wyjście:
0 1 2 3 4 5
Możesz osiągnąć ten sam wynik w Groovy z upto metoda obejmująca oba ograniczenia.
0.upto(5) { println "$it" }
Wyjście:
0 1 2 3 4 5
Tutaj it jest niejawnym parametrem domknięcia i przechowuje wartość bieżącej iteracji. Rozważ poniższy kod.
2.upto(4) { println "$it" }
Wyjście:
2 3 4
Można również użyć times Metoda ta zawsze zaczyna się od 0 i kończy o jeden przed liczbą, na którą jest wywoływana, więc do wydrukowania od 0 do 5 potrzebna jest liczba 6.
6.times { println "$it" }
Wyjście:
0 1 2 3 4 5
Załóżmy teraz, że chcesz wydrukować 0, 2 i 4 za pomocą Java dla pętli.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x=x+2) {
System.out.println(x);
}
}
}
Wyjście:
0 2 4
Możesz użyć step metoda dająca ten sam wynik. Drugim argumentem jest inkrementacja, a pierwszym argumentem jest wykluczająca górna granica.
0.step(5, 2) { println "$it" }
Wyjście:
0 2 4
Groovy Podejmowanie decyzji
Groovy ponownie wykorzystuje Java instrukcje warunkowe i dodaje znacznie bardziej elastyczną switchPoniższa tabela podsumowuje opcje.
| Zestawienie sprzedaży | OPIS |
|---|---|
| instrukcja if | Jak w Java, treść instrukcji if jest wykonywana, gdy warunek jest prawdziwy. |
| instrukcja if/else | Najpierw sprawdzany jest warunek w instrukcji if. Jeśli jest on prawdziwy, instrukcje w bloku if są wykonywane, a blok else jest pomijany. Jeśli jest fałszywy, zamiast niego wykonywane są instrukcje w bloku else. |
| Zagnieżdżone polecenie if | Używane, gdy trzeba przetestować dodatkowy warunek wewnątrz bloku if. |
| instrukcja switch | Zagnieżdżony łańcuch if-else staje się nieczytelny, gdy występuje wiele warunków. Instrukcja switch ułatwia odczytanie tej samej logiki. W Groovyetykieta przypadku może być wartością, klasą, zakresem, wyrażeniem regularnym lub zamknięciem. |
| Zagnieżdżona instrukcja switch | Groovy umożliwia również umieszczenie jednego polecenia switch wewnątrz innego. |
Groovy Lista
Struktura listy umożliwia przechowywanie zbioru elementów danych. W GroovyLista zawiera sekwencję odniesień do obiektów i zachowuje pozycję każdego elementu w tej sekwencji. Literał listy jest zapisywany jako seria obiektów oddzielonych przecinkami i ujętych w nawiasy kwadratowe.
Przykłady Groovy listy:
- Lista ciągów znaków:
['Angular', 'Nodejs'] - Lista odniesień do obiektów mieszanych:
['Groovy', 2, 4, 2.6] - Lista wartości całkowitych:
[16, 17, 18, 19] - Pusta lista:
[]
Poniższe metody listy są dostępne w Groovy.
| Metoda wykonania | OPIS |
|---|---|
| Dodaj() | Dodaje nową wartość na końcu listy. |
| zawiera() | Zwraca wartość true, jeśli lista zawiera określoną wartość. |
| otrzymać() | Zwraca element na podanej pozycji. |
| jest pusty() | Zwraca wartość true, jeśli lista nie zawiera żadnych elementów. |
| minus() | Tworzy nową listę składającą się z elementów oryginału, z wyłączeniem tych określonych w danej kolekcji. |
| plus() | Tworzy nową listę składającą się z elementów oryginału oraz elementów z podanej kolekcji. |
| Muzyka pop() | Usuwa ostatni element z listy i go zwraca. |
| usunąć() | Usuwa element w podanej pozycji. |
| odwrócić() | Tworzy nową listę, która odwraca elementy oryginalnej listy. |
| rozmiar() | Zwraca liczbę elementów na liście. |
| sortować() | Zwraca posortowaną kopię listy. |
Rozważ następujące Groovy przykład skryptu.
def y = ["Guru99", "is", "Best", "for", "Groovy"] println y y.add("Learning") println(y.contains("is")) println(y.get(2)) println(y.pop())
Wyjście:
[Guru99, is, Best, for, Groovy] true Best Learning
Pierwszy wiersz drukuje oryginalną listę pięciu elementów, ponieważ add() jeszcze nie działa. get(2) zwraca „Najlepsze” od Groovy listy są indeksowane od zera i pop() zwraca „Learning”, ponieważ ten element został dodany jako ostatni.
Groovy Mapy
A Groovy Mapa to zbiór par klucz-wartość. Klucze nie wymagają cudzysłowów, gdy są prostymi identyfikatorami, co sprawia, że literały mapy są bardzo zwarte.
Przykłady Groovy mapy:
[tutorial: 'Java', language: 'Groovy']jest zbiorem dwóch par klucz-wartość.[:]przedstawia pustą mapę.
Oto lista metod map dostępnych w Groovy.
| Metoda wykonania | OPIS |
|---|---|
| zawieraKlucz() | Sprawdza, czy mapa zawiera podany klucz. |
| otrzymać() | Wyszukuje klucz na mapie i zwraca pasującą wartość. Jeśli nie zostanie znaleziony żaden wpis, zwraca wartość null. |
| zestaw kluczy() | Zwraca zestaw kluczy na mapie. |
| położyć() | Kojarzy określoną wartość z podanym kluczem. Jeśli mapa zawierała już mapęping dla tego klucza stara wartość zostaje zastąpiona. |
| rozmiar() | Zwraca liczbę map klucz-wartośćpings. |
| wartości () | Zwraca widok kolekcji wartości. |
Groovy przykład:
def y = [fName:'Jen', lName:'Cruise', sex:'F'] print y.get("fName")
Wyjście:
Jen
Groovy Zamknięcia
A Groovy „Caincing” to blok kodu zapakowany w obiekt. Zachowuje się jak metoda lub funkcja, ale można go przechowywać w zmiennej i przekazywać dalej jak każdą inną wartość.
Przykład prostego zamknięcia:
def myClosure = { println "My First Closure" } myClosure()
Wyjście:
My First Closure
Zamknięcie może akceptować parametry. Lista identyfikatorów jest rozdzielona przecinkami, a strzałka (->) oznacza koniec listy parametrów.
def myClosure = { a, b, c -> y = a + b + c println y } myClosure(1, 2, 3)
Wyjście:
6
Zamknięcie może również zwracać wartość.
def myClosure = { a, b, c -> return (a + b + c) } println(myClosure(1, 2, 3))
Wyjście:
6
Jeśli nie zadeklarujesz listy parametrów, Groovy dostarcza pojedynczy niejawny parametr o nazwie itZamknięcia mogą być również przekazywane do innych zamknięć, co jest dokładnie tym samym sposobem, w jaki działają metody gromadzenia, takie jak each, collect, findAll praca.
Groovy Narzędzia
Przyjrzymy się trzem ważnym narzędziom dostarczanym z Groovy dystrybucja:
- świetny: wykonuje kod interaktywnie z wiersza poleceń.
- groovyConsole: graficzne okno umożliwiające interaktywne wykonywanie kodu.
- fajny: stracony Groovy pliki skryptów w taki sam sposób, w jaki uruchamiałbyś Perla lub Python skrypt.
Groovysh
- Powłoka wiersza poleceń.
- Pomaga Ci wykonać Groovy kodować interaktywnie.
- Umożliwia wprowadzanie pojedynczych poleceń lub całych skryptów.
Poniższy zrzut ekranu pokazuje, jak groovysh ocenia wyrażenia wiersz po wierszu.
Groovy Konsola
- Interfejs Swing działający jako minimalny Groovy redaktor ds. rozwoju.
- Umożliwia pisanie i uruchamianie Groovy kodować interaktywnie.
- Pomaga w ładowaniu i uruchamianiu Groovy pliki skryptów.
W Groovy Konsola poniżej, skrypt wpisuje się w górnym panelu, a wynik pojawia się w dolnym panelu.
Groovy
groovy polecenie jest procesorem, który uruchamia Groovy Programy i skrypty. Kompiluje kod źródłowy do bajtkodu w pamięci i wykonuje go w jednym kroku, więc nie jest potrzebny oddzielny etap kompilacji. Można go również używać do testowania prostych Groovy wyrażenia bezpośrednio z terminala, jak pokazano poniżej.
Gdzie Groovy Jest używany w rzeczywistych projektach
Większość programistów spotyka się Groovy nie jako samodzielny język, ale jako warstwę skryptową w narzędziu, które już uruchamiają. Wiedza o tym, gdzie się pojawia, znacznie ułatwia umieszczenie powyższej składni.
| Narzędzie | W jaki sposób Groovy służy |
|---|---|
| Jenkins | Deklaratywne i skryptowe potoki są pisane w Groovy DSL i biblioteki współdzielone są proste Groovy Klasy. |
| Gradle | Klasyka build.gradle plik to Groovy skrypt, dlatego czyta się go bardziej kompaktowo niż Maven POM lub Mrówka plik kompilacji. |
| SoapUI | Groovy Kroki skryptu i asercje skryptu generują dynamiczne dane żądań i niestandardowe kontrole odpowiedzi. |
| Spock | A Groovy struktura testowa, której bloki „gdy-wtedy” i tabele danych są powszechnie używane w testach jednostkowych JVM. |
| Elasticsearch i Grails | Grails tworzy kompletne aplikacje internetowe na Groovyi kilka narzędzi do przetwarzania danych akceptuje Groovy do tworzenia niestandardowych skryptów. |
In testowanie automatyzacji zespoły mają podwójne znaczenie: zadanie CI, które uruchamia pakiet, i same testy mogą być Groovy, więc jeden język obejmuje klejenie potoku i logikę asercji.
Groovy Vs. Java
| Groovy | Java |
|---|---|
| Domyślny modyfikator dostępu jest publiczny, więc metoda bez modyfikatora jest dostępna poza swoją klasą i pakietem. | Domyślnym modyfikatorem dostępu jest package-private, więc pola, metody i klasy bez modyfikatora są widoczne tylko w obrębie swojego pakietu. |
| Metody getter i setter są generowane automatycznie dla właściwości klas. | Musisz samodzielnie zdefiniować metody getter i setter dla pól. |
| Groovy umożliwia podstawienie zmiennych wewnątrz ciągów znaków ujętych w podwójne cudzysłowy. | Java nie obsługuje interpolacji ciągów. |
| Informacje o typie są opcjonalne. | Podanie typu informacji jest obowiązkowe. |
| Instrukcje nie muszą kończyć się średnikiem. | Każde stwierdzenie kończy się średnikiem. |
| Groovy automatycznie opakowuje każdy skrypt w wygenerowaną klasę Script. | Aby uczynić klasę wykonywalną, potrzebna jest metoda main. |
Wszystko jest domyślnie publiczne i dynamiczne, ale @CompileStatic przywraca Java-poziom prędkości i sprawdzania. |
Wszystko jest kompilowane statycznie i sprawdzane w czasie kompilacji. |
Mity na temat Groovy
| Mit | Rzeczywistość |
|---|---|
| Groovy można używać wyłącznie do skryptowania. | Świetnie nadaje się do pisania skryptów, ale kompiluje się również do zwykłych klas, które można dodać do dowolnej aplikacji JVM. |
| Groovy opiera się na domknięciach, jest więc po prostu językiem programowania funkcyjnego. | Groovy zapożycza koncepcje z języków funkcyjnych, takich jak Lisp i Clojure, ale w gruncie rzeczy pozostaje językiem obiektowym. |
| Groovy warto go używać wyłącznie w programowaniu sterowanym testami. | Groovy dobrze pasuje do TDD ze Spockiem, ale to na pewno nie jest jedyny powód, dla którego warto go używać. |
| Potrzebujesz tylko Groovy jeśli chcesz używać Grails. | Grails to potężne środowisko do tworzenia stron internetowych, ale Gradle, Jenkins, a Spock wszyscy używają Groovy bez tego. |
Wady korzystania Groovy
- JVM i Groovy Czas uruchamiania skryptu jest długi, co ogranicza jego zastosowanie w szybkich skryptach na poziomie systemu operacyjnego.
- Groovy nie jest powszechnie przyjęty poza społecznościami skupionymi wokół JVM.
- Jest niewygodny w użyciu Groovy bez IDE rozumiejącego jego dynamiczne funkcje.
- Dynamiczna wysyłka może sprawić, Groovy kod wolniejszy niż odpowiednik Java kod, chyba że się zgłosisz
@CompileStatic. - Groovy programy mogą wymagać więcej pamięci niż zwykłe Java programy.
- Znajomość Java jest w zasadzie warunkiem koniecznym.
Gdy już poczujesz się komfortowo Groovy składnia, naturalnym kolejnym krokiem jest ekosystem wokół niej. Wzmocnij podstawy dzięki Java Tutorial, a następnie zobacz jak Groovy skrypty sterują kompilacjami i wdrożeniami w Jenkins, porównaj narzędzia do kompilacji z Maven oraz Mrówka Apachei odkryj jak Groovy twierdzenia pasują do Selenium i zestawy testów API.














