Groovy Учебное пособие по сценариям для начинающих
⚡ Умное резюме
Groovy Скриптовый язык — это объектно-ориентированный язык для Java Платформа, компилирующая в байт-код JVM. Она добавляет динамические типы.pingзамыкания и лаконичный синтаксис для Javaи он питает Jenkins трубопроводы, Gradle строит, и SoapUI утверждения.

Что такое Groovy Сценарий?
Apache Groovy является объектно-ориентированным, Java синтаксисосовместимый язык программирования, созданный для Java платформа. Этот динамический язык обладает множеством функций, схожих с PythonRuby, Smalltalk и Perl. Groovy исходный код компилируется в Java байт-код, поэтому он работает на любой платформе, где... Java Виртуальная машина установлена. Groovy Кроме того, она выполняет большую работу за кулисами, что делает её более гибкой и динамичной, чем обычная система. Java.
A Groovy скрипт это просто .groovy файл, содержащий операторы, которые Groovy Перед запуском файл оборачивается в сгенерированный класс. Именно поэтому вы можете выполнить файл в одну строку, не создавая класс или что-либо ещё. main метод. Groovy Таким образом, его можно использовать в качестве языка сценариев для Java платформа, сохраняя при этом возможности корпоративного уровня. JavaОн добавляет функции повышения производительности, такие как поддержка DSL, замыкания и опциональная динамическая типизация.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: Начато Джеймсом С.tracХан и Боб Мак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
Предположим, вы хотите вывести простую строку «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.
Если вы попытаетесь присвоить строковое значение элементу 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 OperaTORs
Оператор — это символ, указывающий компилятору на необходимость выполнения определённой математической или логической операции. Groovy Поддерживаются следующие пять групп операторов.
- Арифметические операторы: добавить (+), подставитьtract (-), умножить (*), разделить (/), модуль (%), приращение (++), уменьшение (–).
- Реляционные операторы: равно (==), не равно (!=), меньше (<), меньше или равно (<=), больше (>), больше или равно (>=).
- Логические операторы: и (&&), или (||), а не (!).
- Побитовые операторы: и (&), или (|), исключающее ИЛИ (^), дополнение (~).
- Операторы присваивания: присваивать (=) и составные формы (+=), (-=), (*=), (/=), (%=).
Groovy добавляет несколько операторов, которые Java В них этого нет, и они удаляют много шаблонного кода, связанного с проверкой на null.
| оператор | Описание |
|---|---|
| ?. | Безопасная навигация. Возвращает 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 и заканчивается на единицу меньше числа, на которое вы его вызываете, поэтому для вывода чисел от 0 до 5 вам нужно 6.
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Список содержит последовательность ссылок на объекты и сохраняет положение каждого элемента в этой последовательности. Литерал списка записывается как последовательность объектов, разделенных запятыми и заключенных в квадратные скобки.
Примеры Groovy списки:
- Список строк:
['Angular', 'Nodejs'] - Список ссылок на объекты смешанного типа:
['Groovy', 2, 4, 2.6] - Список целочисленных значений:
[16, 17, 18, 19] - Пустой список:
[]
В следующих методах перечисления доступны следующие варианты. Groovy.
| Способ доставки | Описание |
|---|---|
| Добавить() | Добавляет новое значение в конец списка. |
| содержит() | Возвращает true, если список содержит определенное значение. |
| получить() | Возвращает элемент, находящийся в заданной позиции. |
| пустой() | Возвращает true, если список не содержит элементов. |
| минус() | Создает новый список, состоящий из элементов исходного списка, за исключением тех, которые указаны в заданной коллекции. |
| плюс() | Создает новый список, состоящий из элементов исходного списка и элементов заданной коллекции. |
| поп () | Удаляет последний элемент из списка и возвращает его. |
| Удалить() | Удаляет элемент в указанной позиции. |
| обеспечить регресс() | Создает новый список, в котором элементы исходного списка расположены в обратном порядке. |
| размер() | Возвращает количество элементов в списке. |
| Сортировать() | Возвращает отсортированную копию списка. |
Рассмотрим следующее Groovy Пример скрипта.
def y = ["Guru99", "is", "лучших", "for", "Groovy"] println y y.add("Learning") println(y.contains("is")) println(y.get(2)) println(y.pop())
Выход:
[Guru99, is, лучших, for, Groovy] true лучших Learning
Первая строка выводит исходный список из пяти элементов, потому что add() Запуск ещё не состоялся. get(2) возвращает «лучших», так как Groovy Списки имеют нулевую индексацию, и pop() Возвращает "Learning", поскольку этот элемент был добавлен последним.
Groovy Карты
A Groovy Map — это набор пар «ключ-значение». Ключи не нуждаются в кавычках, если они являются простыми идентификаторами, что делает литералы Map очень компактными.
Примеры Groovy карты:
[tutorial: 'Java', language: 'Groovy']представляет собой набор из двух пар ключ-значение.[:]обозначает пустую карту.
Вот список доступных методов отображения карт. Groovy.
| Способ доставки | Описание |
|---|---|
| containsKey () | Проверяет, содержит ли карта заданный ключ. |
| получить() | Функция выполняет поиск ключа в Map и возвращает соответствующее значение. Если запись не найдена, возвращает null. |
| keySet () | Возвращает набор ключей в Map. |
| положил() | Связывает указанное значение с заданным ключом. Если карта уже содержала другую карту.ping Для этого ключа старое значение заменяется. |
| размер() | Возвращает количество карт типа «ключ-значение».pings. |
| значения() | Возвращает представление коллекции значений. |
Groovy пример:
def y = [fName:'Jen', lName:'Cruise', sex:'F'] print y.get("fName")
Выход:
Jen
Groovy Затворы
A Groovy Замыкание — это блок кода, оформленный в виде объекта. Оно ведёт себя как метод или функция, но может храниться в переменной и передаваться как любое другое значение.
Пример простого замыкания:
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 распределение:
- groovysh: Выполняет код в интерактивном режиме из командной строки.
- 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 скрипт, поэтому он читается более компактно, чем Специалист ПОМ или Муравей файл сборки. |
| SoapUI | Groovy Шаги и утверждения скрипта управляют динамическими данными запроса и пользовательскими проверками ответа. |
| Спок | A Groovy Тестовая среда, блоки данных и таблицы данных которой, заданные в начале и конце, широко используются для модульного тестирования JVM. |
| Elasticsearch и Grails | Grails создает полноценные веб-приложения на основе Groovyи несколько инструментов для работы с данными принимают Groovy для создания пользовательских скриптов. |
In автоматизация тестирования Для команд это имеет двойное значение: задача CI, запускающая набор тестов, и сами тесты могут быть одновременно и запущены, и запущены. GroovyТаким образом, единый язык охватывает логику обработки конвейеров и логику утверждений.
Groovy Vs. 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 без интегрированной среды разработки, которая понимает его динамические возможности.
- Динамическая диспетчеризация может сделать Groovy код медленнее, чем эквивалентный Java код, если вы не примените
@CompileStatic. - Groovy Программам может потребоваться больше памяти, чем обычным программам. Java программ.
- Знание Java по сути, это является необходимым условием.
Когда вы почувствуете себя комфортно Groovy В синтаксисе естественным следующим шагом является окружающая его экосистема. Укрепите основы с помощью Java учебника затем посмотрите, как Groovy скрипты управляют сборкой и развертыванием в Jenkinsсравните инструменты сборки с Специалист и Апачский муравейи узнайте, как Groovy утверждения соответствуют Selenium и наборы тестов API.













