Groovy Підручник зі сценаріїв для початківців

⚡ Розумний підсумок

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

  • 🧩 Java сумісний: Найбільш дійсний Java код компілюється без змін у Groovy, тому вартість навчання залишається дуже низькою.
  • Less шаблонний варіант: Один рядок println замінює клас, метод main та виклик System.out Java вимоги.
  • 🔀 Динамічний тиping: Ключове слово def дозволяє одній змінній містити ціле число, а потім рядок під час виконання.
  • 🔁 Компактні петлі: Методи upto, times та step замінюють багатослівні цикли for у стилі C в одному рядку.
  • 📦 Рідні колекції: Списки та карти мають літеральний синтаксис, а також допоміжні функції, такі як pop, keySet та sort.
  • 🧠 Закриття: Блоки коду діють як об'єкти, приймають параметри, повертають значення та вкладаються всередину інших замикань.
  • Три інструменти: groovysh надає оболонку, groovyConsole надає графічний інтерфейс, а groovy запускає файли скриптів безпосередньо.

Groovy Підручник зі сценаріїв для початківців

Що таке? 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 сторінка завантаження з посиланням на інсталятор

Примітка. Ви також можете встановити Groovy з бінарного Zip-файлу, через менеджер пакетів, такий як SDKMAN!, Homebrew, Scoop або Chocolatey, або як плагін для вашого Java IDE. В цьому Groovy покрокове керівництво, ми будемо дотримуватися Windows інсталятора.

Крок 3) Запустіть завантажений інсталятор. Виберіть мову та натисніть кнопку «ОК».

Groovy діалогове вікно вибору мови інсталятора

Крок 4) На екрані привітання натисніть кнопку ДАЛІ.

Groovy екран привітання інсталятора

Крок 5) Погодьтеся з умовами ліцензії.

Groovy екран ліцензійної угоди інсталятора

Крок 6) Виберіть компоненти, які потрібно встановити, і натисніть кнопку ДАЛІ.

Groovy екран вибору компонентів інсталятора

Крок 7) Виберіть каталог інсталяції та натисніть кнопку ДАЛІ.

Groovy екран каталогу встановлення інсталятора

Крок 8) Виберіть папку меню «Пуск» і натисніть кнопку «ДАЛІ».

Groovy екран папки меню «Пуск» інсталятора

Крок 9) Після завершення встановлення залиште шляхи за замовчуванням і натисніть кнопку ДАЛІ.

Groovy екран шляху середовища інсталятора

Крок 10) Підтвердьте параметри асоціації файлів і натисніть кнопку ДАЛІ.

Groovy екран асоціації файлів інсталятора

Крок 11) У меню «Пуск» знайдіть Groovy Консоль для підтвердження встановлення.

Пошук у меню «Пуск», що відображає 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 розподіл:

  1. класний: виконує код інтерактивно з командного рядка.
  2. groovyConsole: графічне вікно для інтерактивного виконання коду.
  3. чудовий: виконує Groovy файли скриптів, так само, як ви запускаєте Perl або Python сценарій

Groovysh

  • Командна оболонка.
  • Допомагає вам виконати Groovy кодувати інтерактивно.
  • Дозволяє вводити окремі оператори або цілі скрипти.

На скріншоті нижче показано, як groovysh обчислює вирази по одному рядку за раз.

Запуск оболонки командного рядка groovysh Groovy заяви

Groovy Консоль

  • Інтерфейс Swing, який діє як мінімальний Groovy редактор розвитку.
  • Дозволяє писати та запускати Groovy кодувати інтерактивно.
  • Допомагає вам завантажуватися та запускатися Groovy файли скриптів.

Перейдіть на вкладку Groovy Консоль нижче, скрипт вводиться у верхній панелі, а результат відображається в нижній панелі.

Groovy Консольний редактор Swing з панелями скриптів та виводу

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.

Поширені запитання

Groovy Версія 5.0 призначена для JDK 11 і вище. Groovy 4.0 все ще підтримує JDK 8, а також розробку, що триває. Groovy Лінія 6.0 орієнтована на JDK 17. Перевірте таблицю системних вимог на офіційній сторінці завантаження Apache, перш ніж вибирати версію.

Ні. Команда groovy компілює файл .groovy у байт-код у пам'яті та запускає його негайно. Ви все ще можете компілювати його заздалегідь за допомогою groovyc, якщо хочете, щоб файли .class, які можна використовувати повторно, упаковувалися всередину Java Додаток.

Так. Апач Groovy випущено за ліцензією Apache License 2.0, тому комерційне використання, модифікація та поширення дозволені безкоштовно. До поширених збірок застосовуються лише звичайні зобов'язання щодо зазначення авторства та повідомлення про ліцензію.

Groovy — це мова програмування. Grails — це повноцінний веб-фреймворк, написаний на Groovy. Ви можете використовувати Groovy для файлів збірки, конвеєрів або тестів без встановлення Grails, але Grails не може існувати без Groovy.

Вони добре обробляють поширені ідіоми, такі як замикання, методи колекцій та кроки конвеєра. Завжди спочатку запускайте згенеровані скрипти в groovyConsole, оскільки моделі іноді змішуються. Java синтаксис з Groovy скорочення шляхів або винахід методів, яких не існує.

Вставити стек tracе та скрипт у помічника, щоб виявити ймовірні причини, такі як GroovyCastException, відсутнє схвалення пісочниці або неправильний делегат закриття. Розглядайте кожну пропозицію як гіпотезу та перевіряйте її у реальному журналі збірки.

Підсумуйте цей пост за допомогою: