О разделе
Длинные листинги (от ~15 строк) вынесены в каталог code.spirzen.ru и подгружаются в статьях через ExternalCodeEmbed — так HTML энциклопедии не раздувается, а код остаётся с подсветкой, вкладками и сериями "шаг 1…N". Короткие фрагменты (одна строка, пара выражений) по-прежнему прямо в markdown. Диаграммы mermaid и интерактив — на месте или в play.spirzen.ru.
Раздел про Groovy на JVM — синтаксис, GDK, замыкания, DSL (Gradle, Jenkins), тесты (Spock).
Groovy использует Java-подобный синтаксис с компиляцией в байт-код JVM и напрямую работает с Java-классами и библиотеками. Язык годится для полноценных JVM-проектов и как сценарный — без обязательного класса с main. Активно применяется как предметно-ориентированный язык (DSL) — от математики и научных данных до сборки и тестирования приложений.
Стандартизация завершена в Java Community Process (JSR 241). С 2015 года Groovy — проект верхнего уровня Apache (лицензия Apache 2.0). Официальные ресурсы — groovy-lang.org и groovy.apache.org.
Парадигмы — объектно-ориентированное, императивное, сценарное и функциональное программирование; язык мультипарадигмальный и кроссплатформенный. На синтаксис и идеи повлияли Python, Java, Ruby, Perl и Smalltalk. Расширения исходников — .groovy, .gvy, .gsh, .gy.
Честная установка: Groovy редко бывает единственным языком всего продукта. Его учат, когда нужно читать build.gradle, править Jenkinsfile или писать выразительные тесты к Java/Kotlin-коду. База Java сильно ускоряет вход.
Интерактивные демо в части статей — на JavaScript; рядом всегда есть примеры на Groovy.
Сначала: Что такое код и как он работает — общая база — код, блок кода, компиляция и интерпретация, исходный, байт- и машинный код; в этом разделе — синтаксис и особенности языка.
Два маршрута
| Кто вы | Маршрут |
|---|---|
| Уже пишете на Java/Kotlin | Что требуется знать перед началом изучения языка программирования Groovy → Сравнение Java и Groovy → Основы языка Groovy (делегирование замыканий) → Справочник по языку Groovy (Spock, Jenkins) |
| Новичок на JVM | Сначала Java — первая программа, потом первая программа на Groovy |
Рекомендуемый порядок (язык + инструменты)
- Что знать перед Groovy
- История — зачем язык на JVM
- Сравнение Java и Groovy — таблица отличий, пример кода,
==, GString,def, вызов из Java - Первая программа — IDEA, NetBeans или
groovy hello.groovy - Основы — MetaClass, делегирование замыканий (сердце Gradle DSL)
- Типы → Операторы → Циклы
- ООП → Особенности
- Пунктуация → Конструкции и фреймворки
- Gradle Groovy DSL — чтение
build.gradle - Spock · Jenkins Pipeline — CI и тесты
- Job DSL Playground · Jenkins Shared Library — jobs и общий код CI
- FastJ — игра на Groovy (опционально)
- Практикум — API-тестер — desktop-приложение на Groovy + JMeter
- Справочник — углубление
- Итоги и чек-лист
Новые проекты часто пишут build.gradle.kts (Kotlin DSL). Groovy DSL всё ещё встречается в старых репозиториях и в примерах Android — этот раздел как раз про чтение таких скриптов.
Зачем этот раздел
Научить читать и писать Groovy там, где он реально живёт — сборка, CI, тесты — а не конкурировать с Spring Boot на Java/Kotlin.
С чего начать
| Шаг | Материал | Зачем |
|---|---|---|
| 1 | Первая программа | Запуск, структура Gradle-проекта |
| 2 | Gradle Groovy DSL | build.gradle |
| 3 | Основы — делегирование | Почему работает implementation |
| 4 | Spock · Jenkins | Тесты и CI |
| 5 | Shared Library · Job DSL | Стандартизация CI на Groovy |
Частые ошибки при старте
| Ошибка | Что делать |
|---|---|
| Учить Groovy без Java | Минимум Java 13 или Kotlin на JVM |
Сравнивать == с Java | В Groovy == → equals — Сравнение Java и Groovy |
| Писать приложение на Grails "с нуля" | Для нового веба чаще Spring/Ktor; Grails — Синтаксические конструкции Groovy, legacy |
Забыть def в скрипте | Иначе MissingPropertyException — Первая программа на Groovy |
Что попробовать
- Скрипт
hello.groovyбез IDE — Первая программа на Groovy. - В Основы языка Groovy — мини-DSL с
delegateкак в Gradle. - Один тест Spock к Java-классу — раздел 19 в Справочник по языку Groovy.
- FastJ — игра на Groovy (опционально)
- Практикум — API-тестер — REST API через Swing + JMeter
- чек-лист.
История языка Groovy
Краткая хронология Groovy на JVM — от идеи James Strachan до ниши Gradle, Jenkins и Spock.
Что требуется знать перед началом изучения языка программирования Groovy
Groovy — язык для JVM: тот же байт-код и библиотеки Java, но короче синтаксис, замыкания и скрипты.
Рекомендации по разработке на Groovy
Набор советов, правил, принципов и обычаев в разработке на этом языке.
Простые приложения на Groovy
Простые приложения на Groovy — скрипты на JVM, файлы, JSON и HTTP.
Основы языка Groovy
Макросы на уровне языка (начиная с Groovy 2.5) — groovy.transform.Macro позволяет инжектить код, основываясь на анализе AST.
Типы данных и объявление переменных в Groovy
Статическая и динамическая типизация в Groovy, примитивы JVM, строки GString, коллекции, диапазоны и ключевые операторы def, as, instanceof.
Операторы и выражения в Groovy
Операторы и выражения в Groovy - арифметика, логика и выразительный синтаксис поверх JVM-экосистемы.
Циклы и управляющие конструкции в Groovy
Циклы и управляющие конструкции Groovy - императивные и декларативные способы описания логики выполнения.
Объектно-ориентированное программирование в Groovy
ООП в Groovy - классы, свойства, трейты и идиомы JVM-совместимого синтаксиса.
Иерархия исключений в Groovy
Нет проверяемых исключений — компилятор Groovy игнорирует механизм throws, принятый в Java.
Особенности и расширения языка Groovy
Динамическая типизация, метапрограммирование, AST-трансформации, DSL, работа с XML и JSON, синтаксический сахар и интеграция с Java.
Синтаксис и пунктуация в Groovy
Кавычки, скобки, замыкания, switch, регулярные выражения и truthiness в Groovy.
Ключевые слова языка Groovy
Groovy использует все ключевые слова Java и добавляет собственные для упрощения синтаксиса. Справочник разделён на логические группы для удобства использования.
Встроенные функции и метапрограммирование
Набор функций, которые включены в стандартную библиотеку языка.
Синтаксические конструкции Groovy
Замыкания, коллекции, JSON/XML, фреймворки Gradle, Grails, Spock и сферы применения Groovy.
Работа с базами данных из Groovy
GORM в Grails и Spring, доменные классы, CRUD, связи, транзакции, альтернативы Sql и JDBC для скриптов на Groovy.
Первая программа на Groovy
Гайд по установке и настройке с написанием первой программы и её запуском.
Java и Groovy
Java и Groovy на одной JVM. Таблица отличий, плюсы и минусы, сферы применения, примеры кода и практическая совместимость.
Spock — первая спецификация
Spock — фреймворк тестов на Groovy для Java-проектов: given/when/then, where, моки и Gradle.
Jenkins Pipeline — первый Jenkinsfile
Jenkins — сервер CI/CD. Declarative Pipeline в Jenkinsfile на Groovy: stages, agent, post и credentials.
Gradle Groovy DSL — первая сборка
build.gradle на Groovy — plugins, dependencies, tasks, wrapper и разбор блоков dependencies { } для Java-проекта.
FastJ — первая игра на Groovy
FastJ — кроссплатформенный игровой движок на Java с шаблоном на Groovy. Gradle, сцена, спрайты, ввод и сборка исполняемого файла.
Job DSL Playground — jobs Jenkins как код
Jenkins Job DSL Plugin — seed job, pipelineJob и job на Groovy, API Viewer, папки, views и отличие от Declarative Pipeline в Jenkinsfile.
Jenkins Shared Library — общий Groovy-код CI
Shared Library в Jenkins — структура vars/ и src/, @Library, global vars, классы Groovy, версионирование и шаблоны pipeline для команд.
Практикум — API-тестер на Groovy и JMeter
Пошаговая сборка desktop-приложения для ручного тестирования REST API — Gradle, Swing GUI, Apache JMeter как HTTP-движок, модели запроса и ответа.
Справочник по языку Groovy
Groovy не навязывает жёсткой структуры, но следует общепринятым соглашениям JVM-экосистемы, особенно если используется Gradle или Maven.
Groovy — итоги
Итоги раздела «Groovy» — FAQ и краткие ответы по теме.
Groovy — чек-лист
Чек-лист раздела «Groovy» — вопросы для самопроверки.
Groovy — о разделе
Groovy на JVM — синтаксис, GDK, DSL для Gradle и Jenkins, тесты Spock; маршрут для сборки и автоматизации, не для "основного" приложения.
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
Бэкенд и серверная разработка — Ruby — о разделе, Rust — о разделе, Go — о разделе, Swift — о разделе, Kotlin — о разделе, Lua и Luau — о разделе.