Groovy
def file = new File("data.txt")
Обережно: metaprogramming здатна зробити код магічним.== AST transforms ==
int y
як приклад: Для нових production JVM apps часто обирають Kotlin або Java. Приклад:
methodMissing і propertyMissing
Jenkins Pipeline часто пишуть на Groovy-based DSL.== Elvis operator ==
Обмеження:
Файл:
println line
Це оптимізує ловити помилки раніше. * Safe navigation — оператор ?. Grails був дуже популярним як Groovy/Rails-like framework для JVM. Groovy історично дуже сильний у роботі з XML. DSL-можливості Groovy — одна з причин, чому він став основою Gradle DSL і Jenkins Pipeline. Line 2
|-
| Groovy || scripting, DSL, Gradle/Jenkins, Spock, dynamic style, automation
|-
| Kotlin || статична типізація, Android, backend, Kotlin DSL, modern JVM app development
|}
String name
Groovy і Kotlin
def active = true
Groovy і Java
|-
| Java || стабільність, performance, enterprise ecosystem, static typing
|-
| Groovy || коротший синтаксис, dynamic features, scripts, DSL, тестування
|}
Динамічність зручна для:
Groovy і API
- Java — production code;
- Groovy/Spock — tests;
- Groovy — Jenkinsfile;
- Groovy DSL — Gradle build scripts. Jenkinsfile
Closure — блок коду як значення. * JVM — Java Virtual Machine. * def — оголошення змінної;
[1,2,3] — list literal;
{ it * 2 } — closure;
collect — map-like operation. * Spock — testing framework для Java/Groovy.
Це означає:
Spock часто використовують для тестування Java-коду.<ref>https://groovy.apache.org/download.html</ref>
</div>
import groovy.transform.Canonical
}
println message
import groovy.json.JsonOutput
* запуск неперевірених scripts;
* dynamic code execution;
* unsafe Jenkins pipelines;
* secrets у Jenkinsfile;
* небезпечний metaprogramming;
* dependency vulnerabilities;
* небезпечна deserialization;
* GroovyShell із user input;
* sandbox bypass у CI/CD;
* надмірні permissions для build agents. }
<pre>
dependencies {
Станом на травень 2026 року офіційна сторінка Apache Groovy Download зазначає, що '''Groovy 5.0''' виступає як latest stable version, designed for JDK11+.<pre>
Але:
Сценарії:
Тут:
Приклад:
== Static compilation ==
<pre>
}
"""
[[Категорія:Пояснення термінів]]
== it ==
a.plus(b)
Приклад:
Groovy синтаксично близький до Java, але коротший.<ref>https://groovy-lang.org/documentation.html</ref>
}
* читабельний DSL;
* given/when/then;
* data tables;
* mocks;
* expressive assertions;
* менше boilerplate;
* інтеграційні функції ERP з JUnit Platform. * '''@Grab''' — annotation для підвантаження dependencies у scripts.== Groovy у DevOps ==
Потрібно контролювати:
println greet("Anna")
це мультипарадигмальна мова програмування; так само реалізовано статичною перевіркою, closures, scripting, DSL-можливостями та глибокою інтеграцією з Java виступає ключовою рисою JVM, яка поєднує Java-подібний синтаксис із динамічною типізацією забезпечується через '''Groovy''' або '''Apache Groovy'''. class MathService {
println "World"
* Java interoperability;
* JVM ecosystem;
* короткий синтаксис;
* scripts;
* closures;
* collections;
* GDK;
* JSON/XML;
* DSL;
* Gradle;
* Jenkins Pipeline;
* Spock;
* Grails;
* AST transforms;
* dynamic і static modes;
* automation. a + b
Multiline string:
}
sh 'echo Running tests'
Scala має сильну type system і functional/OOP стиль.Для scripts і build logic performance часто достатній. Groovy-код здатна бути дуже динамічним, тому безпека важлива. * propertyMissing — hook для невідомих properties. Сильні сторони
Groovy найкраще використовувати там, де потрібна гнучкість JVM: scripts, CI/CD, tests, DSL і automation. Groovy підтримує @CompileStatic. # Не використовувати Groovy там, де Java/Kotlin будуть простішими для команди. Мова !! * @CompileStatic;
- Java interop;
- правильні collections;
- уникнення зайвого metaprogramming;
- профілювання;
- використання Java для hot paths. Groovy дуже поширений у DevOps через Jenkins Pipeline. String currency
import groovy.transform.TypeChecked
<user name="Anna"/>
}
import groovy.json.JsonSlurper
- scripts;
- DSL;
- швидкого прототипування;
- тестів;
- Jenkins pipelines;
- automation. JSON support корисний для API, automation і integration scripts. Приклад:
* '''Groovy''' — мультипарадигмальна мова програмування для JVM. Scripted Pipeline більш гнучкий, але здатна бути складнішим для підтримки. * '''Closure''' — блок коду як значення. stages {
a + b
офіційний GitHub repository Groovy описує мову як таку, що підтримує dynamic features, optional typing, duck typing, а так само static compilation і static type checking на рівні Java або вище через extensible static type checker.== Closures ==
<pre>
<pre>
Потрібні sandboxing, permissions і security review. {| class="wikitable"
}
pipeline {
<pre>
<pre>
Spock відомий виразним DSL для тестів.<pre>
println doubled
'''Spock''' — testing framework для Java і Groovy.<pre>
<code>def</code> означає: тип визначиться під час виконання або буде виведений компілятором залежно від контексту.<pre>
class Money {
Приклад:
def doubled = numbers.collect { it * 2 }
У Groovy 6 release notes згадується новий <code>groovy-http-builder</code> module для HTTP-клієнтів, але Groovy 6 alpha releases не рекомендовані для production. Офіційна документація Groovy показує версію '''5.0.5''' серед доступних актуальних documentation versions. * '''AST transform''' — compile-time трансформація коду. int square(int x) {
== Collections ==
agent any
<pre>
def name = "Groovy"
hello.groovy
Це скорочує код для collection transformations.
groovysh — інтерактивний shell для Groovy.== Groovy і ERP-системи ==
Traits корисні для композиції поведінки без класичного multiple inheritance. для collection property/method access. У контексті K2 ERP Groovy здатна бути корисним опосередковано:
Приклад:
як приклад:
Groovy-код компілюється у bytecode, який виконується JVM. Сильні сторони Metaprogramming дуже потужний, але небезпечний для підтримки. # Використовувати Spock для тестів, де він справді покращує читабельність. }
Gradle так само підтримує Kotlin DSL, але Groovy DSL досі дуже поширений. Для великих нових production-систем варто свідомо порівнювати Groovy з Java, Kotlin, Scala, Go, C# або Python.[1]
Запис:
agent any
Groovy здатна бути динамічно типізованим. * @TypeChecked — Groovy annotation для статичної перевірки типів. Приклад ідеї:
Коли Groovy здатна бути невдалим вибором
Gradle — build automation tool, який історично активно використовує Groovy DSL.== Scripts ==
Groovy — практична JVM-мова для scripting, DSL, build automation, Jenkins pipelines, Spock tests і Java integration. * GDK — Groovy Development Kit, extension methods для JDK classes. Запуск:
def customer = new Customer(name: "Anna", age: 17)
Spread operator *. Файл:
Коли Groovy особливо корисний
Запуск:
def data = [name: "Anna", active: true]
Приклад:
== Groovy у тестуванні ==
* collections;
* DSL;
* Gradle;
* Jenkins pipelines;
* Spock tests;
* callbacks;
* builders. Але виконання коду з user input здатна бути небезпечним. !<pre>
Приклад:
конкурентні переваги:
int x
Приклад:
== Semicolons ==
"Hello, $name"
[[Категорія:Testing]]
Для серйозних API-клієнтів краще використовувати HTTP libraries, error handling, retries, timeouts і logging.<div style="background:#f6ffed;border-left:6px solid #27ae60;padding:14px 18px;margin:16px 0;border-radius:8px;">
def "adding two numbers returns sum"() {
== Синтаксис ==
2 + 3 == 5
}
Spock підтримує:
- specification style;
- given/when/then;
- data-driven testing;
- mocking;
- interaction testing;
- expressive assertions.
Data-driven testing у Spock
Spock дуже зручний для табличних тестів.
Приклад:
def "max of two numbers"() {
expect:
Math.max(a, b) == result
Groovy здатна працювати зі Spring ecosystem. Приклад:
Приклад:
[[Категорія:Java]]
<code>@CompileStatic</code> здатна покращити performance і зробити поведінку ближчою до Java.
Groovy спрощує роботу з файлами. Це робить тестові cases читабельними.
}
def count = 10
Але зловживання цим підходом робить код важким для IDE, static analysis і нових розробників. # У Gradle оцінювати Groovy DSL і Kotlin DSL залежно від команди. Grape дає можливість підвантажувати dependencies у scripts через @Grab. * GroovyShell — інструмент для динамічного виконання Groovy-коду. Це набір extension methods до стандартних Java/JDK classes.[2]
</root>
Це інтуїтивно для scripts і DSL, але менш безпечно для великих production-систем. для null-safe access. Immutable objects корисні для thread safety і domain modeling. def city = user?.address?.city
def name = inputName ?: "Guest"
}
У Groovy крапки з комою зазвичай не потрібні. конкурентні переваги:
Groovy 5 додав @OperatorRename AST transform для operator overloading у third-party libraries. }
Продуктивність
- automation;
- DevOps;
- file processing;
- data cleanup;
- admin tasks;
- quick reports;
- calling Java APIs;
- CI/CD helpers. def name = "Groovy"
Вона корисна для:
pipeline {
'''Grails''' — web framework на Groovy. # Не зберігати secrets у Groovy scripts. XML важливий для legacy enterprise systems, build tools, SOAP, configs і старих Java-проєктів. }
[[Категорія:Apache Groovy]]
[[Категорія:CI/CD]]
groovysh
Groovy підтримує static type checking через @TypeChecked. AST transforms зменшують boilerplate. }
@TypeChecked
Приклад ідеї:
repositories {
<pre>
Groovy функціонує на JVM і дуже тісно інтегрується з Java. # Обережно використовувати GroovyShell. Мова !!<pre>
* потрібен новий high-performance backend;
* команда не знає JVM;
* потрібна максимальна статична типізація;
* потрібен Android app;
* потрібна AI/data science ecosystem;
* потрібен простий portable script без JVM;
* DSL буде занадто магічним;
* Jenkinsfile перетворюється на application code;
* production code важко review-ити через dynamic features. Groovy здатна бути невдалим вибором, якщо:
Якщо <code>user</code> або <code>address</code> null, результат буде null, а не exception. testImplementation 'org.spockframework:spock-core:2.4-M4-groovy-4.0'
* dynamic code здатна давати runtime помилки;
* performance нижчий за Java в dynamic mode;
* metaprogramming здатна ускладнити підтримку;
* Groovy менш популярний для нових backend-систем;
* Jenkins Groovy має security-ризики;
* потрібна JVM;
* Kotlin/Java часто кращі для нових production JVM apps. # Не створювати надмірно магічні DSL. * навчання;
* швидкої перевірки коду;
* scripts;
* experiments;
* роботи з snippets. Jenkins має scripted pipeline style:
через <code>@Immutable</code>користувачі можуть створювати immutable classes.== Хороші практики ==
}
# Фіксувати Groovy і JDK versions. Мова !! * @ToString;
* @EqualsAndHashCode;
* @TupleConstructor;
* @Canonical;
* @Immutable;
* @CompileStatic;
* @TypeChecked;
* @Builder;
* @Delegate;
* @Slf4j. Можна писати:
Groovy має сильні metaprogramming функції ERP.
! println user ["name"]
Не можна бездумно виконувати Groovy-код із неперевірених pull requests. * Trait — reusable behavior unit у Groovy. Groovy зазвичай не обирають як основну мову для нових великих backend-систем, але він часто виступає як дуже корисним як “клей” навколо JVM-інфраструктури.Для DSL, scripts, Jenkins і Spock Groovy залишається дуже практичним. def methodMissing(String name, args) {
Operators
echo 'Building...'
steps {
Підтримуваність
def numbers = [1, 2, 3, 4]
Потрібна дисципліна. Якщо closure має один параметр, Groovy здатна використовувати неявне ім’я it. println json.name
як приклад:
println xml.user.@name
Динамічна типізація
Для high-performance backend краще оцінювати Java/Kotlin/Scala або статично скомпільований Groovy.
Приклад:
node {
Приклад:
@Immutable
Добре:
Groovy і Python
Якщо потрібна AI/data ecosystem — Python сильніший. Недолік: startup і runtime characteristics залежать від JVM, що здатна бути зайвим для дуже маленьких scripts. groovyConsole — графічна консоль для запуску Groovy-коду.
<pre>
Changelog Apache Groovy так само показує активні релізи гілок Groovy 5.0.x і 4.0.x у 2026 році, зокрема Groovy 4.0.32 від 4 травня 2026 року. Groovy дуже зручний для scripts. # Перевіряти dependencies.== Safe navigation operator ==
<pre>
<pre>
Groovy більше орієнтований на productivity, scripting і dynamic/DSL сценарії. Integer age
println StringUtils.capitalize("groovy")
class Customer {
Declarative Pipeline часто читабельніший для типових CI/CD задач.<ref>https://github.com/apache/groovy</ref>
def text = url.text
У сучасних Java/Spring командах Groovy часто зустрічається саме в тестах через Spock.<pre>
== Jenkins Pipeline ==
== @Grab і Grape ==
Поширені помилки:
BigDecimal amount
}
Groovy часто доповнює Java, а не замінює її. * '''JDK''' — Java Development Kit. Якщо команда не розуміє, звідки взявся method або property, технічна підтримка різко ускладнюється. stage('Test') {
println "Unknown method: $name"
У production вона не замінює нормальний build/test workflow.Closures — одна з головних можливостей Groovy.
expect:
stage('Build') {
Groovy-код здатна бути дуже читабельним або дуже магічним. Groovy 5 орієнтований на JDK 11+, а Groovy 6 — на JDK 17+. * Static type checking — перевірка типів на етапі компіляції.[3]
stage('Test') {
Доступ:
Traits
Приклад:
Map:
Groovy і безпека
Актуальна реліз системи
String name
Пояснення термінів
Ідея: якщо object має потрібний method, його можна викликати без явного interface. Приклад:
- зловживати
defу великому production-коді; - не використовувати
@CompileStaticтам, де потрібна надійність; - писати Jenkinsfile як велику програму без структури;
- зберігати secrets у scripts;
- виконувати неперевірений Groovy-код;
- надмірно використовувати metaprogramming;
- не документувати DSL;
- плутати GString і String у Java interop;
- не враховувати null;
- покладатися на runtime помилки;
- не тестувати build logic;
- не фіксувати Groovy/JDK/Gradle versions. {| class="wikitable"
Groovy не виступає як ERP-системою. * scripting engines;
- internal DSL;
- admin consoles;
- rule engines;
- plugins. * Gradle — build automation tool із Groovy/Kotlin DSL. * Grape — dependency mechanism для Groovy scripts. # Використовувати Groovy 5 для нових stable Groovy-проєктів.
Приклад:
@Canonical
GroovyShell
file.eachLine { line -> DSL у Groovy можуть виглядати майже як конфігураційна мова. * methodMissing — hook для невідомих method calls.. import groovy.transform.Immutable
Сценарії: Groovy частіше — для automation, testing і build DSL. }
steps {
x * x
Gradle
5 | 3 || 5 mavenCentral()
SEO title: Groovy — динамічна й статична JVM-мова для scripting, Gradle, DSL, Jenkins pipelines, Spock, Grails і Java-інтеграції
SEO keywords: Groovy, Apache Groovy, Groovy 5, JVM language, Java interoperability, Gradle Groovy DSL, Jenkins Pipeline Groovy, Spock Framework, Grails, Groovy scripting, Groovy DSL, Groovy closures, Groovy collections, Groovy GDK, AST transforms, GroovyShell, Groovy metaprogramming, static compilation Groovy, dynamic typing Groovy, Jenkinsfile, CI/CD Groovy, testing Groovy, Java Groovy integration, програмування Groovy
</noinclude>
{{SEO
Шаблон для службового SEO-опису сторінки.
}}
stage('Build') {
def text = """
def user = [id: 1, name: "Anna", active: true]
Головна ідея
Groovy дає можливість перехоплювати виклики невідомих methods/properties. Scala частіше використовують для складного backend або data frameworks.[4]
Groovy 5 release notes зазначають, що Groovy має понад 2000 extension methods до 150+ JDK classes, а Groovy 5 додав 350 new methods. Особливість
Погано:
List:
Groovy і Spring
- CI/CD pipelines;
- Jenkins automation;
- Gradle scripts;
- тестування Java-компонентів через Spock;
- integration scripts;
- обробка JSON/XML;
- внутрішні DSL для правил;
- automation навколо JVM-сервісів;
- технічна підтримка legacy Grails/Java систем, які інтегруються з ERP. * credentials;
- script approval;
- sandbox;
- shared libraries;
- permissions;
- external commands;
- secrets masking;
- logs;
- pull request builds;
- third-party plugins.
Groovy має safe navigation operator <code>?. '''Коротко:''' Groovy — це “Java без зайвої церемонності”: коротший синтаксис, scripts, closures, DSL і доступ до всієї JVM-екосистеми. import org.apache.commons.lang3.StringUtils def names = users*.name Groovy здатна використовувати duck typing. Integer id <code>@Canonical</code> додає типові methods і constructor. } void log(String message) { Під час роботи з Groovy варто: <pre> * писати scripts на JVM; * використовувати Java libraries; * створювати DSL; * зменшувати boilerplate; * писати expressive tests; * цифровізувати CI/CD; * будувати Gradle scripts; * працювати з JSON/XML коротко; * обирати dynamic або static style; * інтегруватися з існуючим Java-кодом.== Duck typing == def url = new URL("https://api.example.com/items") * Groovy здатна викликати Java classes; * Java здатна використовувати Groovy classes; * Groovy функціонує з Maven/Gradle dependencies; * можна використовувати Java libraries; * можна запускати Groovy у JVM application; * можна змішувати Java і Groovy в одному проєкті. Groovy зазвичай повільніший за Java в dynamic mode, бо має runtime dispatch і dynamic features. Groovy часто використовують для: ! } * collections; * strings; * files; * streams; * dates; * XML; * JSON; * iterators. """) Для великих кодових баз краще розглядати <code>@TypeChecked</code> або <code>@CompileStatic</code>. Groovy у Jenkins — один із найпоширеніших практичних сценаріїв. def doubled = numbers.collect { it * 2 } Приклад <code>build.gradle</code>: Groovy дає доступ до JVM і Java libraries, що корисно в enterprise CI/CD. Groovy має кілька типів string literals.== Grails ==
a | b || result
def numbers = [1, 2, 3]
<pre>
Scripts корисні для:
}
Groovy 5 release notes згадують revamped REPL <code>groovysh</code> на JLine 3 з покращеннями на кшталт syntax highlighting, history і completion. Groovy підтримує traits. * '''Jenkins Pipeline''' — CI/CD pipeline DSL у Jenkins, часто на Groovy. def xml = new XmlSlurper().parseText("""
Популярні annotation transforms:
'''JVM''' — Java Virtual Machine. * '''Apache Groovy''' — офіційна назва проєкту Groovy в Apache Software Foundation.<pre>
Trait дає можливість описати reusable behavior. так само вказано, що '''Groovy 6.0''' — next major version для JDK17+, але alpha releases не рекомендовані для production. '''Для документації:''' у Groovy-проєктах критично вказувати не тільки Groovy version, а й JDK version. }
Приклад:
}
@Grab('org.apache.commons:commons-lang3:3.14.0')
echo 'Building'
Ризики:
Spread operator
Ranges зручні для loops, tests і DSL. @CompileStatic
Groovy дає можливість:
Groovy має зручні інструменти для JSON. # Тримати Jenkinsfile коротким, логіку виносити в shared libraries.== Дивіться так само == println "Hello, $name" Проста аналогія: Java — це строгий офісний костюм. * Java ecosystem;
- mature runtime;
- garbage collection;
- cross-platform;
- tooling;
- libraries;
- enterprise compatibility;
- Gradle/Maven;
- monitoring tools.== Spock Framework ==
Приклад Java-подібного Groovy-коду:
Генерація JSON:
trait Logger {
Це робить scripts коротшими. GString — Groovy string із interpolation. Groovy корисний у бізнесі для: Він не веде обліковий облік, не проводить документи й не керує складом сам по собі.[5] println "Hello from Groovy"
Groovy і Scala
Це схоже на скорочення для типових data classes. GDK — Groovy Development Kit. * GString — Groovy string із interpolation. Але додавати Groovy в ERP-архітектуру варто тільки там, де JVM/Groovy ecosystem уже справді застосовується для. здатна відповідати method call:
Практичний висновок
@Canonical
GroovyShell дає можливість виконувати Groovy-код динамічно.[6]
}
Jenkins security
} <pre> Головна ідея Groovy — зробити JVM-розробку гнучкішою, коротшою й зручнішою, не відриваючись від Java ecosystem.
- Java
- Kotlin
- Scala
- C Sharp
- Go
- Python
- PowerShell
- F Sharp
- Erlang
- Haskell
- Розробка в K2 ERP
- Тестування коду
- API K2 ERP
- Інтеграції K2 ERP
- GitHub Copilot
- Cursor
- Tabnine
- Штучний інтелект
- Генеративний AI
Код:
- Apache Groovy — офіційна сторінка
- Apache Groovy — Download
- Apache Groovy — Documentation
- Apache Groovy Documentation
- Apache Groovy — Changelogs
- Apache Groovy — Release notes for Groovy 5.0
- Apache Groovy — Release notes for Groovy 6.0
- Apache Groovy — Install Groovy
- Apache Groovy GitHub Repository
- Spock Framework
- Gradle
- Jenkins Pipeline Documentation
- Grails
- MediaWiki — Help:Formatting
- MediaWiki — Help:Links
Groovy у бізнесі
class Point {
Він побудований навколо ідей convention over configuration, GORM, plugins і продуктивної web-розробки на JVM. Groovy collections дуже зручні для scripting і data transformations. Якщо потрібні Java libraries — Groovy зручний. Groovy і Python схожі тим, що обидві мови зручні для scripts.
def numbers = [1, 2, 3]
@Immutable
== Strings ==
Покращити performance можна через:
Для Java-команд Spock здатна бути головною причиною тримати Groovy в проєкті. }
Line 1
class Customer {
users.findAll { it.active }.collect { it.email }
Jenkins Pipeline на Groovy потребує обережності. Groovy — це той самий офіс, але без краватки: JVM лишається, Java libraries лишаються, але писати можна швидше й вільніше. * '''DSL''' — domain-specific language. * '''Spread operator''' — оператор <code>*. # Не запускати неперевірений код у CI/CD. # Документувати DSL і metaprogramming. Сильні сторони:
@Immutable
XML
Вони використовуються в: Це корисно для:
Files
plugins {
JVM
println customer.name
echo 'Testing'
Це інтуїтивно, але здатна приховати проблеми, якщо null не очікувався. Порівняння:
Ranges
- Jenkins pipelines;
- Gradle builds;
- test automation;
- internal scripts;
- Java integration;
- DSL для бізнес-правил;
- data transformations;
- quick admin tools;
- legacy Grails apps;
- integration scripts.== Статична перевірка типів ==
}
}
Сьогодні його використовують у частині legacy і active Groovy web projects, але mainstream web/backend частіше йде в Spring Boot, Java/Kotlin, Node.js, Go, C# або інші стеки. Це робить код коротким, але в складних closures краще явно називати параметри. 1 | 2 || 2 Groovy має ranges.== Типові помилки в Groovy ==
DSL
Джерела
println JsonOutput.toJson(data)
println user.name Його часто люблять не за теорію, а за практичність в automation, build tools і тестуванні. Приклад:
class Service implements Logger {
Groovy і Java
import groovy.transform.CompileStatic
Це корисно для DSL. where:
Офіційна сторінка Apache Groovy описує Groovy як multi-faceted language for the JVM із Java-like syntax, productivity features, OO і functional paradigms, static and dynamic natures, scripts і DSL. Elvis operator?: задає fallback value.
groovysh
Groovy здатна викликати REST API. Якщо inputName false-like або null, буде використано "Guest". * Dynamic typing — типи перевіряються переважно під час виконання. * @CompileStatic — Groovy annotation для статичної компіляції. Groovy дуже сильний у testing через Spock. # Для production code розглядати @TypeChecked або @CompileStatic. * Jenkinsfile — файл опису Jenkins Pipeline. * Spring Boot apps;
- configuration;
- tests;
- integration scripts;
- dynamic beans historically;
- Spock tests для Spring apps. * приховані methods;
- runtime monkey patching;
- складні DSL без документації;
- methodMissing всюди;
- неявні globals;
- Jenkinsfile на тисячі рядків. new File("out.txt").text = "Hello"
}
Groovy і Kotlin обидві JVM-мови, але мають різні цілі. Це інтуїтивно для scripts, але в production build краще використовувати Gradle або Maven.String interpolation: <root>
Groovy особливо корисний для:
stages {
Це дуже інтуїтивно для scripts. * Elvis operator — оператор ?: для fallback value.- scripts;
- automation;
- Gradle build scripts;
- Jenkins pipelines;
- Spock tests;
- Grails web applications;
- DSL;
- CI/CD;
- integration scripts;
- роботи з JSON/XML;
- Java interoperability;
- internal tools. Groovy зменшує boilerplate, але лишається близьким до Java.== Metaprogramming ==
def greet = { name ->
Приклад:
}
groovyConsole
def numbers = 1..5
критично: Groovy scripts у Jenkins або automation часто мають доступ до секретів, deployment keys і production-середовищ.
як приклад, Groovy додає зручні методи для:
Приклад:
println text
<pre>
{| class="wikitable"
groovy hello.groovy
class Calculator {
Звичайний string:
Groovy перевантажує багато operators через methods. * '''Grails''' — web framework на Groovy. # Писати tests для build/automation logic. # Профілювати performance перед оптимізацією. Але динамічність здатна приховати помилки до runtime.<div style="background:#fff0f0;border-left:6px solid #eb5757;padding:14px 18px;margin:16px 0;border-radius:8px;">
Groovy дуже сильний у створенні DSL — domain-specific languages.<pre>
println "Hello"
def json = new JsonSlurper().parseText('{"name":"Anna","age":17}')
* Gradle scripts;
* Jenkins pipelines;
* Spock tests;
* Java test automation;
* JVM scripting;
* DSL;
* automation;
* JSON/XML processing;
* internal tools;
* build logic;
* CI/CD;
* legacy Grails apps;
* quick integration scripts. '''AST transform''' — механізм, який змінює або доповнює код на етапі компіляції. Groovy має зручні literals для списків і maps. int add(int a, int b) {
|-
| '''Groovy''' || JVM, Java libraries, Gradle/Jenkins, Spock, enterprise Java integration
|-
| '''Python''' || data science, AI, scripting ecosystem, automation, simple deployment for scripts
|}
id 'java'
Scripted Pipeline
GDK
import groovy.transform.Immutable
- Jenkinsfile;
- build automation;
- release scripts;
- deployment logic;
- Gradle builds;
- internal automation;
- integration tasks;
- working with APIs;
- file processing.
}
- dynamic methods;
- metaClass;
- methodMissing;
- propertyMissing;
- AST transforms;
- runtime modification;
- DSL support. застосовує доступ до кожного елемента collection. Такий код треба review-ити як production-код.== JSON ==
println numbers.toList() Приклад: