Groovy Підручник зі сценаріїв для початківців
⚡ Розумний підсумок
Groovy Скрипт — це об'єктно-орієнтована мова для Java платформа, яка компілюється в байт-код JVM. Вона додає динамічний typing, замикання та лаконічний синтаксис для Java, і це забезпечує Jenkins трубопроводи, Gradle будує, і SoapUI твердження.

Що таке? Groovy Сценарій?
Apache Groovy є об'єктно-орієнтованим, Java синтаксично сумісна мова програмування, створена для Java платформа. Ця динамічна мова має багато функцій, подібних до Python, Ruby, Smalltalk та Perl. Groovy вихідний код компілюється в Java байт-код, тому він працює на будь-якій платформі, де Java Віртуальну машину встановлено. Groovy також виконує багато роботи за лаштунками, що робить його більш спритним та динамічним, ніж звичайний Java.
A Groovy сценарій просто .groovy файл, що містить твердження, що Groovy обгортає згенерований клас перед його запуском. Ось чому ви можете виконати однорядковий файл без написання класу чи main метод. Groovy тому може бути використана як мова сценаріїв для Java платформи, водночас пропонуючи корпоративні можливості JavaВін додає функції підвищення продуктивності, такі як підтримка DSL, замикання та додатковий динамічний ty.pingНа відміну від деяких інших мов, вона розроблена як доповнення до Java, а не його заміна.
💡 Порада: Groovy Версія 5.0 є поточною стабільною версією та орієнтована на JDK 11 та вище. Groovy Версія 4.0 залишається доступною для проектів JDK 8, і Groovy Версія 6.0 для JDK 17 все ще знаходиться в альфа-версії. Завжди перевіряйте таблицю системних вимог на офіційній сторінці завантаження, перш ніж вибирати версію.
Чому Groovy?
Ось основні причини, чому вам варто використовувати та вивчати Groovy:
- Groovy є гнучкою та динамічною мовою.
- Він бездоганно інтегрується з усіма існуючими Java об'єкти та бібліотеки.
- Це здається легким і природним Java розробники
- Код є більш лаконічним та змістовним, ніж еквівалент Java Код.
- Ви можете використовувати його скільки завгодно всередині Java додатків.
- Він працює за стандартом Java Віртуальна машина, тому окреме середовище виконання не потрібне.
Groovy Історія
- 2003: Розпочато користувачем James StracХан та Боб МакWhirтер.
- 2004: Подано до Java Процес Громади як JSR 241, який пізніше був відкликаний.
- 2005: Повернуто track від Джеремі Рейнера та Гійома Лафоржа.
- 2007: Groovy Випущено 1.0.
- 2012: Groovy Випущено 2.0.
- 2014: Groovy Версія 2.3 випущена з офіційною підтримкою JDK 8.
- 2015: Groovy став проектом найвищого рівня в Apache Software Foundation.
- 2022: Groovy Випущено версію 4.0, з переміщенням координат Maven до
org.apache.groovy. - 2025: Groovy Версія 5.0 випущена для JDK 11 і вище.
Особливості Groovy
- Літерали списків, мап, діапазонів та регулярних виразів.
- Мультиметоди (диспетчеризація методів виконання) та метапрограмування.
- Groovy класи та скрипти зазвичай зберігаються в
.groovyфайли. - Сценарії містять Groovy оператори без оголошення класу.
- Сценарії також можуть містити визначення методів поза визначеннями класів.
- Groovy код може бути скомпільований та повністю інтегрований з традиційним Java Додаток.
- Підтримка карт, списків та регулярних виразів на рівні мови.
- Підтримка замикань, динамічна синхронізаціяping, та протокол метаоб'єктів.
- Підтримка як статичної, так і динамічної вібраціїping, плюс перевантаження операторів.
- Додаткова статична перевірка типів через
@TypeCheckedта@CompileStaticанотації
Як встановити Groovy
Крок 1) Переконайтеся, що у вас є Java встановлений.
Крок 2) Перейдіть до https://groovy.apache.org/download.html і натисніть кнопку Windows посилання на інсталятор.
Примітка. Ви також можете встановити Groovy з бінарного Zip-файлу, через менеджер пакетів, такий як SDKMAN!, Homebrew, Scoop або Chocolatey, або як плагін для вашого Java IDE. В цьому Groovy покрокове керівництво, ми будемо дотримуватися Windows інсталятора.
Крок 3) Запустіть завантажений інсталятор. Виберіть мову та натисніть кнопку «ОК».
Крок 4) На екрані привітання натисніть кнопку ДАЛІ.
Крок 5) Погодьтеся з умовами ліцензії.
Крок 6) Виберіть компоненти, які потрібно встановити, і натисніть кнопку ДАЛІ.
Крок 7) Виберіть каталог інсталяції та натисніть кнопку ДАЛІ.
Крок 8) Виберіть папку меню «Пуск» і натисніть кнопку «ДАЛІ».
Крок 9) Після завершення встановлення залиште шляхи за замовчуванням і натисніть кнопку ДАЛІ.
Крок 10) Підтвердьте параметри асоціації файлів і натисніть кнопку ДАЛІ.
Крок 11) У меню «Пуск» знайдіть Groovy Консоль для підтвердження встановлення.
⚠️ Попередження: Команда Windows Інсталятор — це артефакт, створений спільнотою, а не офіційний реліз Apache. Якщо вашій організації потрібні підписані завантаження Apache, використовуйте бінарний Zip-дистрибутив і перевірте його .asc підпис і .sha256 контрольна сума замість цього.
Groovy Привіт, світ, приклад
Припустимо, ви хочете вивести простий рядок «Hello World» у JavaКод виглядатиме так.
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
вихід:
Hello World
Наведений вище код дійсний в обох Java та Groovy, Так як Groovy приймає майже все Java синтаксис. Перевага з Groovy полягає в тому, що ви можете відмовитися від оголошення класу, публічного методу та повного виклику print і отримати той самий вивід одним рядком.
println "Hello World"
вихід:
Hello World
- Крапка з комою не потрібна.
- Немає потреби в класі чи
mainметод. System.out.printlnзводиться доprintln.
Groovy Змінні
In JavaСтатичне зв'язування є обов'язковим, що означає, що тип змінної має бути оголошений заздалегідь.
public class Demo {
public static void main(String[] args) {
int x = 104;
System.out.println(x);
//x = "Guru99";
}
}
вихід:
104
У наведеному вище прикладі тип змінної оголошується заздалегідь за допомогою ключового слова intЯкби ви оголосили число з плаваючою комою, ви б використали ключове слово float or double.
Якщо ви спробуєте присвоїти значення типу String int (розкоментуйте рядок 5), ви отримаєте таку помилку компіляції.
Demo.java:5: error: incompatible types: String cannot be converted to int x = "Guru99";
У контрасті, Groovy підтримує динамічний тиpingЗмінні визначаються за допомогою ключового слова def, і тип не потрібно оголошувати заздалегідь. Тип змінної визначає середовище виконання, і ви навіть можете змінити цей тип пізніше.
def x = 104 println x.getClass() x = "Guru99" println x.getClass()
вихід:
class java.lang.Integer class java.lang.String
In Groovy Ви також можете створювати багаторядкові рядки. Просто переконайтеся, що ви берете рядок у потрійні лапки.
def x = """Groovy at Guru99""" println x
вихід:
Groovy at Guru99
Примітка: Ви все ще можете використовувати явні типи, такі як byte, short, int та long in GroovyАле після явного оголошення типу ви не можете змінити його динамічно.
int x = 104 println x x = "Guru99"
вихід:
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 Operaторс
Оператор — це символ, який вказує компілятору виконати певну математичну або логічну маніпуляцію. Groovy підтримує наступні п'ять сімейств операторів.
- Арифметичні оператори: додати (+), підсумуватиtract (-), множення (*), ділення (/), модуль (%), приріст (++), зменшення (–).
- Реляційні оператори: дорівнює (==), не дорівнює (!=), менше ніж (<), менше або дорівнює (<=), більше ніж (>), більше або дорівнює (>=).
- Логічні оператори: та (&&), або (||), а не (!).
- Побітові оператори: і (&), або (|), виключне або (^), доповнення (~).
- Оператори присвоювання: призначте (=) та складені форми (+=), (-=), (*=), (/=), (%=).
Groovy додає кілька операторів, які Java не має, і вони видаляють багато шаблонів перевірки нулів.
| Operaтор | Опис |
|---|---|
| ?. | Безпечна навігація. Повертає значення null замість викидання винятку NullPointerException, коли ліва частина має значення null. |
| ?: | Оператор Елвіса. Повертає ліву частину, якщо вона істинна, інакше — праву. |
| <=> | Оператор космічного корабля. Делегати для compareTo та корисні всередині замикань сортування. |
| ==~ | Збіг регулярних виразів. Повертає значення true лише тоді, коли весь рядок відповідає шаблону. |
Groovy Петлі
In Java, ви б визначили цикл підрахунку наступним чином.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x++) {
System.out.println(x);
}
}
}
вихід:
0 1 2 3 4 5
Ви можете досягти такого ж результату в Groovy з upto метод, який включає обидві межі.
0.upto(5) { println "$it" }
вихід:
0 1 2 3 4 5
тут it — це неявний параметр замикання, який містить значення поточної ітерації. Розглянемо наступний код.
2.upto(4) { println "$it" }
вихід:
2 3 4
Ви також можете використовувати times метод. Він завжди починається з 0 і зупиняється на одиницю менше числа, для якого ви його викликаєте, тому вам потрібно 6, щоб вивести від 0 до 5.
6.times { println "$it" }
вихід:
0 1 2 3 4 5
Тепер припустимо, що ви хочете вивести 0, 2 та 4 за допомогою Java для петлі.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x=x+2) {
System.out.println(x);
}
}
}
вихід:
0 2 4
Ви можете використовувати step метод для того самого результату. Другий аргумент – це приріст, а перший аргумент – це виключна верхня межа.
0.step(5, 2) { println "$it" }
вихід:
0 2 4
Groovy Прийняття рішень
Groovy повторно використовує Java умовні оператори та додає набагато гнучкіший switchУ таблиці нижче наведено короткий опис варіантів.
| Заява | Опис |
|---|---|
| якщо заява | А саме Java, тіло оператора if виконується, коли умова істинна. |
| оператор if/else | Умова в операторі if обчислюється першою. Якщо вона істинна, виконуються оператори в блоці if, а блок else пропускається. Якщо вона хибна, замість неї виконуються оператори в блоці else. |
| Вкладений оператор if | Використовується, коли потрібно перевірити додаткову умову всередині блоку if. |
| заява перемикача | Вкладений ланцюжок if-else стає нечитабельним, коли у вас багато умов. Оператор switch робить ту саму логіку легшою для читання. У Groovy, міткою випадку може бути значення, клас, діапазон, регулярний вираз або замикання. |
| Вкладений оператор switch | Groovy також дозволяє розміщувати один оператор switch всередині іншого. |
Groovy список
Структура списку дозволяє зберігати колекцію елементів даних. У GroovyСписок (List) містить послідовність посилань на об'єкти та зберігає позицію кожного елемента в цій послідовності. Літерал списку записується як послідовність об'єктів, розділених комами та укладених у квадратні дужки.
Приклади Groovy списки:
- Список рядків:
['Angular', 'Nodejs'] - Список посилань на змішані об'єкти:
['Groovy', 2, 4, 2.6] - Список цілочисельних значень:
[16, 17, 18, 19] - Порожній список:
[]
Наступні методи списку доступні в Groovy.
| Метод | Опис |
|---|---|
| add () | Додає нове значення в кінець списку. |
| містить() | Повертає значення true, якщо список містить певне значення. |
| get () | Повертає елемент у заданій позиції. |
| пусто() | Повертає значення true, якщо список не містить елементів. |
| мінус() | Створює новий список (List) з елементів оригіналу, виключаючи ті, що вказані у заданій колекції. |
| плюс() | Створює новий список (List), що складається з елементів оригіналу разом з елементами заданої колекції. |
| поп () | Видаляє останній елемент зі списку та повертає його. |
| видалити () | Видаляє елемент у заданій позиції. |
| зворотний() | Створює новий Список, який змінює розташування елементів оригінального Списку. |
| розмір () | Повертає кількість елементів у списку. |
| сортувати () | Повертає відсортовану копію списку (List). |
Розглянемо наступне Groovy приклад сценарію.
def y = ["Guru99", "is", "Best", "for", "Groovy"] println y y.add("Learning") println(y.contains("is")) println(y.get(2)) println(y.pop())
вихід:
[Guru99, is, Best, for, Groovy] true Best Learning
Перший рядок друкує оригінальний список із п'яти елементів, оскільки add() ще не бігав. get(2) повертає «Найкращий» з Groovy списки мають нульову індексацію, і pop() повертає «Навчання», оскільки цей елемент було додано останнім.
Groovy карти
A Groovy Map – це набір пар ключ-значення. Ключі не потребують лапок, коли вони є простими ідентифікаторами, що забезпечує дуже компактність літералів map.
Приклади Groovy карти:
[tutorial: 'Java', language: 'Groovy']являє собою колекцію з двох пар ключ-значення.[:]представляє порожню карту.
Ось список методів картографування, доступних у Groovy.
| Метод | Опис |
|---|---|
| міститьКлюч() | Перевіряє, чи містить карта заданий ключ. |
| get () | Шукає ключ у Map та повертає відповідне значення. Якщо запис не знайдено, повертає значення null. |
| keySet() | Повертає набір ключів у Map. |
| поставити() | Зв'язує вказане значення з заданим ключем. Якщо Карта вже містить картуping для цього ключа старе значення замінюється. |
| розмір () | Повертає кількість пар «ключ-значення»pings. |
| values () | Повертає представлення колекції значень. |
Groovy приклад:
def y = [fName:'Jen', lName:'Cruise', sex:'F'] print y.get("fName")
вихід:
Jen
Groovy Закриття
A Groovy Замикання (closume) — це блок коду, обгорнутий як об'єкт. Він поводиться як метод або функція, але його можна зберігати у змінній та передавати як будь-яке інше значення.
Приклад простого замикання:
def myClosure = { println "My First Closure" } myClosure()
вихід:
My First Closure
Замикання може приймати параметри. Список ідентифікаторів розділяється комами, а стрілка (->) позначає кінець списку параметрів.
def myClosure = { a, b, c -> y = a + b + c println y } myClosure(1, 2, 3)
вихід:
6
Замикання також може повертати значення.
def myClosure = { a, b, c -> return (a + b + c) } println(myClosure(1, 2, 3))
вихід:
6
Якщо ви не оголошуєте список параметрів, Groovy надає один неявний параметр з назвою itЗамикання також можна передавати іншим замиканням, саме так і використовуються методи колекцій, такі як each, collect та findAll працювати.
Groovy Інструменти
Ми розглянемо три важливі інструменти, що постачаються з Groovy розподіл:
- класний: виконує код інтерактивно з командного рядка.
- groovyConsole: графічне вікно для інтерактивного виконання коду.
- чудовий: виконує Groovy файли скриптів, так само, як ви запускаєте Perl або Python сценарій
Groovysh
- Командна оболонка.
- Допомагає вам виконати Groovy кодувати інтерактивно.
- Дозволяє вводити окремі оператори або цілі скрипти.
На скріншоті нижче показано, як groovysh обчислює вирази по одному рядку за раз.
Groovy Консоль
- Інтерфейс Swing, який діє як мінімальний Groovy редактор розвитку.
- Дозволяє писати та запускати Groovy кодувати інтерактивно.
- Допомагає вам завантажуватися та запускатися Groovy файли скриптів.
Перейдіть на вкладку Groovy Консоль нижче, скрипт вводиться у верхній панелі, а результат відображається в нижній панелі.
Groovy
Команда groovy команда - це процесор, який виконує Groovy програми та скрипти. Він компілює вихідний код у байт-код у пам'яті та виконує його за один крок, тому окремий етап збірки не потрібен. Його також можна використовувати для тестування простих Groovy вирази безпосередньо з терміналу, як показано нижче.
де Groovy Використовується в реальних проектах
Більшість розробників зустрічаються Groovy не як окрема мова, а як рівень сценаріїв всередині інструменту, який вони вже виконують. Знання того, де він знаходиться, значно полегшує розміщення наведеного вище синтаксису.
| Інструмент | Як Groovy використовується |
|---|---|
| Jenkins | Декларативні та сценарні конвеєри пишуться в Groovy DSL та спільні бібліотеки є простими Groovy класи. |
| Gradle | Класичний build.gradle файл є Groovy сценарій, тому він читається компактніше, ніж Maven POM або Мураха файл збірки. |
| SoapUI | Groovy Кроки скрипта та твердження скрипта керують динамічними даними запитів та перевірками користувацьких відповідей. |
| Спок | A Groovy тестовий фреймворк, чиї блоки «задано-коли-то» та таблиці даних широко використовуються для модульних тестів JVM. |
| Elasticsearch та Grails | Grails створює повноцінні веб-додатки на Groovy, а кілька інструментів обробки даних приймають Groovy для написання користувацьких сценаріїв. |
In тестування автоматизації Для команд це має подвійне значення: робота інженера нерозривної взаємодії, яка запускає пакет, і самі тести можуть бути Groovy, таким чином одна мова охоплює логіку конвеєрного з'єднання та логіку тверджень.
Groovy проти Java
| Groovy | Java |
|---|---|
| Модифікатор доступу за замовчуванням є public, тому метод без модифікатора доступний поза межами свого класу та пакета. | Модифікатор доступу за замовчуванням — package-private, тому поля, методи та класи без модифікатора видимі лише в межах їхнього пакета. |
| Геттери та сетери генеруються автоматично для властивостей класу. | Ви повинні самостійно визначити методи отримання та встановлення для полів. |
| Groovy дозволяє підстановку змінних всередині рядків у подвійних лапках. | Java не підтримує інтерполяцію рядків. |
| Інформація про тип необов'язкова. | Інформація про тип є обов'язковою. |
| Оператори не обов'язково повинні закінчуватися крапкою з комою. | Кожне твердження закінчується крапкою з комою. |
| Groovy автоматично обгортає кожен скрипт у згенерований клас Script. | Вам потрібен метод main, щоб зробити клас виконуваним файлом. |
За замовчуванням усе публічне та динамічне, але @CompileStatic відновлює Java-рівень швидкості та перевірка. |
Все статично компілюється та перевіряється під час збірки. |
Міфи про Groovy
| Міф | Реальність |
|---|---|
| Groovy можна використовувати лише для написання скриптів. | Він чудово підходить для написання скриптів, але також компілюється у звичайні класи, які можна вбудовувати в будь-яку JVM-програму. |
| Groovy все зосереджено на замиканнях, тому це просто функціональна мова програмування. | Groovy запозичує ідеї з функціональних мов, таких як Lisp та Clojure, але в основі своїй залишається об'єктно-орієнтованою мовою. |
| Groovy варто використовувати лише для розробки на основі тестування. | Groovy добре підходить для TDD зі Споком, але це, звичайно, не єдина причина його використовувати. |
| Вам потрібно лише Groovy якщо ви хочете використовувати Grails. | Grails — це потужний фреймворк для веб-розробки, але Gradle, Jenkinsі Спок усі використовують Groovy без цього. |
Мінуси використання Groovy
- JVM і Groovy час запуску скрипта повільний, що обмежує його використання для швидкого виконання скриптів на рівні ОС.
- Groovy не широко застосовується поза межами спільнот, орієнтованих на JVM.
- Незручно користуватися Groovy без IDE, яке розуміє його динамічні функції.
- Динамічна диспетчеризація може зробити Groovy код повільніший за еквівалент Java код, якщо ви не подасте заявку
@CompileStatic. - Groovy програмам може знадобитися більше пам'яті, ніж звичайним Java програм.
- Знання Java фактично є передумовою.
Як тільки ви почуватиметеся комфортно з Groovy синтаксис, природним наступним кроком є екосистема навколо нього. Зміцніть основи за допомогою Java підручник, тоді подивіться, як Groovy скрипти керують збірками та розгортаннями в Jenkins, порівняйте інструменти для створення з Maven та Апач Мураха, та дослідіть, як Groovy твердження вписуються в Selenium та набори тестів API.













