Groovy Учебное пособие по сценариям для начинающих

⚡ Умное резюме

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

  • 🧩 Java совместимый: Наиболее достоверный Java код компилируется без изменений в GroovyТаким образом, стоимость обучения остается очень низкой.
  • ⚡ Less Стандартный текст: Одна строка println заменяет класс, метод main и вызов System.out. Java требования.
  • 🔀 Динамическая typing: Ключевое слово `def` позволяет одной переменной хранить сначала целое число, а затем строку во время выполнения программы.
  • 🔁 Компактные петли: Методы upto, times и step заменяют многословные циклы for в стиле C всего одной строкой кода.
  • 📦 Местные коллекции: Списки и карты имеют буквальный синтаксис, а также вспомогательные функции, такие как pop, keySet и sort.
  • ???? Закрытие: Блоки кода выступают в роли объектов, принимают параметры, возвращают значения и вкладываются в другие замыкания.
  • ⚙️ Три инструмента: groovysh предоставляет командную оболочку, groovyConsole — графический интерфейс пользователя, а groovy запускает скриптовые файлы напрямую.

Groovy Учебное пособие по сценариям для начинающих

Что такое 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 Страница загрузки со ссылкой на установщик

Примечание. Вы также можете установить 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

Предположим, вы хотите вывести простую строку «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 распределение:

  1. groovysh: Выполняет код в интерактивном режиме из командной строки.
  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 скрипт, поэтому он читается более компактно, чем Специалист ПОМ или Муравей файл сборки.
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.

Часто задаваемые вопросы (FAQ)

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 — это язык программирования. Grails — это полнофункциональный веб-фреймворк, написанный на... Groovy. Вы можете использовать Groovy для файлов сборки, конвейеров или тестов без установки Grails, но Grails не может существовать без Groovy.

Они хорошо справляются с распространёнными приёмами, такими как замыкания, методы коллекций и этапы конвейера. Всегда сначала запускайте сгенерированные скрипты в groovyConsole, потому что модели иногда смешиваются. Java синтаксис с Groovy изобретать обходные пути или придумывать методы, которых не существует.

Вставить стек trace и скрипт в ассистенте для выявления вероятных причин, таких как a GroovyОшибка CastException, отсутствие подтверждения в песочнице или неправильный делегат замыкания. Рассматривайте каждое предположение как гипотезу и проверяйте его по реальному журналу сборки.

Подведем итог этой публикации следующим образом: