A multi-faceted language for the Java platform
Apache Groovy is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for the Java platform aimed at improving developer productivity thanks to a concise, familiar and easy to learn syntax. It integrates smoothly with any Java program, and immediately delivers to your application powerful features, including scripting capabilities, Domain-Specific Language authoring, runtime and compile-time meta-programming and functional programming.
Flat learning curve
Concise, readable and expressive syntax, easy to learn for Java developers
Smooth Java integration
Seamlessly and transparently integrates and interoperates with Java and any third-party libraries
Vibrant and rich ecosystem
Web development, reactive applications, concurrency / asynchronous / parallelism library, test frameworks, build tools, code analysis, GUI building
Powerful features
Closures, builders, runtime & compile-time meta-programming, functional programming, type inference, and static compilation
Domain-Specific Languages
Flexible & malleable syntax, advanced integration & customization mechanisms, to integrate readable business rules in your applications
Scripting and testing glue
Great for writing concise and maintainable tests, and for all your build and automation tasks
Apache Groovy events you shouldn’t miss!
Community over Code NA
Halifax, Nova Scotia
October 7-10, 2023
The latest innovations from dozens of Apache projects and their communities in a collaborative, vendor-neutral environment.
There is a 2-day Groovy track covering latest news, testing and functional programming with Groovy, Spock, Grails, Micronaut, GORM, Gradle, DSLs, using Groovy for data science, with Apache Ignite, with Kubernetes, and more. Also, there is Groovy content in other tracks plus some special events like BoF sessions and other surprises.
For more events see the Events page
They all use Apache Groovy!
Что пишут на Groovy?
Groovy — известный объектно-ориентированный язык программирования, который был разработан для платформы Java в качестве дополнения к этому языку, причем дополнения, обладающего возможностями Python, Ruby и Smalltalk. Groovy использует в своей работе Java-подобный синтаксис и динамически компилируется в JVM байт-код, а также может напрямую работать с Java-библиотеками и другим Java-кодом.
На практике Groovy можно использовать практически в любом Java-проекте, хотя никто не мешает применять его и в качестве скриптового языка. Например, язык очень активно используют в роли предметно-ориентированного языка для написания самых разных скриптов, необходимых для работы в таких предметных областях, как математика, обработка научных данных и т. д. Кроме того, подходит Groovy и для сборки и тестирования приложений (Gradle).
Groovy прошел стандартизацию в Java Community Process (JSR 241).
Основные возможности:
- поддерживается статическая и динамическая типизация;
- встроен синтаксис для списков;
- поддерживаются ассоциативные массивов, а также массивы и регулярные выражения;
- поддерживается перегрузка операций;
- возможна работа с замыканиями, которые появились в Groovy задолго до Java.
Что написано на Groovy:
- web-фреймворк Grails (именно в сочетании с этим фреймворком Groovy нашел свое основное применение);
- неблокирующий web-фреймворк Ratpack;
- web-фреймворк для создания web-сайтов/приложений, работающих на микросервисах Micronaut;
- web-фреймворк для тестирования Spock-приложений;
- десктопный фреймворк Griffon;
- фреймворк для параллельных/распределенных вычислений с применением системы «акторов» Gpars;
- фреймворк Geb, предназначенный для тестирования web-сайтов;
- ORM-обертка над БД GORM;
- программный комплекс SDKMAN!, предназначенный для управления версиями языков программирования Java/Groovy/Scala/Kotlin/Ceylon, а также таких приложений, как Maven, SBT, Spark, Ant, Gradle, Grails, Spring Boot, Vert.x (полный перечень смотрите здесь).
Хотите прокачать свои навыки по программированию на Groovy? Добро пожаловать на специализированный курс в Otus!
Groovy

Устройте конкурс между агентствами и узнайте реальные цены и сроки выполнения вашего проекта. Создание заказа занимает 5 минут.
Об инструменте
Что такое Groovy
Groovy – объектно-ориентированный язык программирования, надстройка над языком Java. Язык разработала организация Apache. Основное отличие Groovy от Java заключается в поддержке динамической типизации, что делает Groovy более гибким языком. Groovy обратно совместим с Java, а также поддерживает компиляцию в байт-код через JVM – виртуальную машину Java. При необходимости, Groovy поддерживает статическую типизацию, а также дополнительные библиотеки Java.
В сравнении с Java, Groovy работает на более высоких уровнях абстракции, что позволяет писать меньше кода. Риски, связанные с динамической типизацией, нивелируются благодаря методу разработки через тестирование. Groovy заработал популярность благодаря функциям замыкания, метапрограммирования, а также достаточно большой экосистеме.
Технологии экосистемы Groovy:
- Grails – многофункциональный бэкенд-фреймворк, вдохновленный Ruby on Rails;
- Gradle – популярная среда автоматизации сборки для языков Groovy, Java, Kotlin;
- Geb – среда тестирования веб-приложений для Groovy, которая интегрируется в браузер и отлично подходит для реализации метода разработки через тестирование, свойственного Groovy.
Стоит отметить, что Java перенимает многие нововведения Groovy, внедряя их в свой язык: например, начиная с 8 версии, Java тоже стал поддерживать функцию замыкания. Тем не менее, Groovy продолжает развиваться благодаря поддержке Apache и мощному комьюнити – в 2021 году язык занял 10 позицию по популярности в авторитетном рейтинге TIOBE. На 2022 год, частота использования Groovy упала вдвое, но за этим языком определенно стоит следить – Groovy продолжает обновляться, а его новшества расширяют возможности Java-разработчиков.
Где чаще применяют Groovy
- Разработка веб-приложений с помощью фреймворков;
- Написание скриптов для автоматизации процессов;
- Разработка приложений с использованием метода разработки через тестирование.
Преимущества разработки на Groovy
- Гибкость языка за счет поддержки динамической и статической типизации;
- Скорость благодаря компилированию языка в байт-код;
- Обратная совместимость с Java и поддержка его библиотек;
- Достаточно большое количество разнообразных инструментов для работы.
Недостатки разработки на Groovy
- Малое количество специалистов и материалов на русском языке;
- Веб-разработка более популярна на других языках, таких как PHP, Ruby on Rails, Python.
Примеры готовых работ на Groovy
- Сайт разработчиков программного обеспечения Craftbase – craftbase.io.
- Сайт американской авиакомпании Southwest Airlines Co – southwest.com.
- Сайт платежной системы TransferWise – wise.com.
- Сайт онлайн-магазина одежды Trendyol – trendyol.com.
- Сайт канадского видеохостинга Rumble – rumble.com.
Язык программирования Groovy

Groovy — язык, основанный на синтаксисе и принципах Java. Он использует объектно ориентированный подход к построению программ. Типизация данных в Груви может быть как статической, так и динамической. Для компиляции языка используется Java Virtual Machine.
История разработки
Джеймс Стрекан, создатель Groovy, впервые рассказал о своем детище в 2003 году через публикацию в своем блоге. Правда, официальная версия платформы была представлена только в январе 2007, и именно она получила префикс 1.0. Последняя на текущий момент итерация языка, под номером 3.0, вышла в 2020 году.
Сам Джеймс Стрекан покинул команду разработки еще до релиза Groovy 1.0. Позже он писал, что язык Scala, как и Груви представляющий собой надстройку над Java, показался ему более перспективным.
В настоящее время язык является собственностью корпорации Dell, а также поддерживается организацией-фондом Apache Software Foundation.
Особенности языка
В Groovy есть ряд “фишек”, отличающих его от Java и многих других ООП языков.
- Совмещение статической и динамической типизации.
Статическая типизация предполагает строгое указание типа переменной при ее объявлении. При динамическом подходе это действие не обязательно, компилятор определяет тип самостоятельно. Груви использует оба метода типизации, в отличие от Java, где доступна только статика. - Замыкания в коде.
Замыкания, или closure, это, по сути, функции встроенные в функций. Они могут взаимодействовать с локальными переменными внутри “родителя”. Замыкания связывают данные в единую цепочку и упрощают взаимодействия внутри программы. - Метапрограммирование.
Groovy использует runtime и compile time программирование. Это значит, что части исходного кода можно расширять не только во время компиляции, но и при исполнении программы. - Перегрузка операторов.
Перегрузка, или переопределение, операторов применяется для использования одинаковых функций и методов для различных типов данных в общей области видения. Например, извлечения корня как из вещественных, так и дробных или комплексных чисел. Groovy может перегружать стандартные операторы, а Java — нет. - Дополнительный тип строчных переменных.
В Груви есть строчный тип GString с двойными кавычками. Стандартные строки с одинарными кавычками, как в Java, тоже поддерживаются. - Оригинальный синтаксис массивов и списков.
Новый тип массивов в Groovy, под названием Maps, позволяет создавать группы из объединенных в пары элементов. Например, ExMap = [ ‘x’ : 1, ‘y’ : 2, ‘z : 3 ].
Range — это тип данных, представляющий собой промежуток значений с заданным началом и окончанием — ряд чисел, алфавитная последовательность и т. п. - Интеграция языков разметки.
Груви совместим с разметкой XML и HTML формата. Он может как парсить существующие документы, так и создавать новые через древовидную структуру данных.
Преимущества Groovy

Рассмотрим главные плюсы языка.
- Полная интеграция с Java.
Груви дополняет и улучшает код, написанный на Java. Программы. написанные на Groovy, без проблем считываются компилятором JVM. - Доступность в популярных IDE.
Рассматриваемый язык включают в себя большинство применяемых интегрированных сред разработки: NetBeans, Eclipse и др. - Простота освоения.
Особенно это актуально для программистов, знакомых с Java, Python и подобными языками. Им синтаксис Groovy покажется знакомым и привычным. - Параллельные и асинхронные вычисления.
Программы на Груви быстро выполняются за счет параллельного вычисления потоков. Благодаря этому свойству рассматриваемый язык часто применяется для разработки реактивных веб-приложений, где важна скорость ответа системы на действия пользователя. - Поддержка Apache Foundation.
Независимый фонд оказывает значительное влияние на развитие языка, улучшая его в лучшую сторону и повышая доверие сообщества к платформе.
Где применяется язык
Groove — язык программирования общего назначения. Он используется во многих сферах разработки.
- Веб приложения.
Grails, фреймворк Groovy, отлично подходит для создания быстрых, высоконагруженных сайтов и веб-систем с мгновенным ответом на пользовательские запросы. - Микросервисные платформы.
Фреймворк Micronaut позволяет разрабатывать приложения, основанные на микросервисах — изолированных фрагментах программы, взаимодействующих между собой через специальные команды. - Десктопные приложения.
ПО для компьютеров на Groovy пишется через фреймворк Griffon. - Сценарии тестирования.
Тесты для сайтов и браузерных приложений можно написать, используя приложение SoapUI. Фреймворк Geb также подойдет для этих целей. - Параллельные вычисления.
Распределительные системы на Groovy выполняются за счет встроенной системы Graps. - Программы для обработки данных.
Часто язык используется для написания кода, обрабатывающего большие массивы данных, например, для статистических и научных исследований.
Примеры кода
Для вывода на экран надписи понадобится всего одна команда.
print("Hello world!")
Рассмотрим также, как в Groovy устроены методы функций.
class Example < static void mlp(int x,int y) < int m = x*y; println(m); >static void main(String[] args) < mlp(3,4); >>

Заключение
Groovy — язык программирования, дополняющий Java и расширяющий его возможности. В нем есть динамическая типизация, обновленные типы данных, возможность прямой работы с XML и другие “фишки”. Благодаря фреймворкам и расширениям Груви используется фактически во всех сферах разработки — от веб-среды до проверочных тестов.
