История языка Groovy
Play ITЗагрузка интерактивного демо…
Play ITЗагрузка интерактивного демо…
История языка Groovy
Groovy появился в начале 2000-х как язык-компаньон Java для JVM — тот же байт-код и библиотеки, но короче синтаксис, скрипты без main, замыкания и метапрограммирование. Заменить Java он не задумывался — цель была ускорить автоматизацию, тесты и конфигурацию в Java-экосистеме.
Подробнее о том, что переносится из Java без правок, а что отличается: Groovy и Java: совместимость.
Хронология
| Период | Событие |
|---|---|
| авг. 2003 | James Strachan публикует в блоге первое описание языка для JVM |
| 2003–2006 | Серия предварительных релизов; после старта стандартизации JCP нумерацию сменили — "1.0" стала первым "официальным" номером |
| 2004 | JSR-241 — стандартизация в Java Community Process; инкубатор Apache |
| 2 янв. 2007 | Groovy 1.0 — первая стабильная версия |
| дек. 2007 | Groovy 1.1 из‑за крупных изменений перенумеровали в 1.5 |
| 2007 | Гийом Лафорж (Guillaume Laforge) возглавляет проект и комитет JSR-241 |
| 2007 | Spring 2.5 — конфигурация через Groovy |
| 2008 | Grails 1.0 — веб-фреймворк на Groovy + Spring + Hibernate |
| осень 2008 | Компания G2One (развитие Groovy и Grails) переходит к SpringSource; далее через VMware, Pivotal, EMC активы языка в 2017 году оказываются у Dell |
| 2009 | Gradle (Groovy DSL); Groovy в Jenkins (Hudson) |
| июль 2009 | Strachan в блоге признаёт, что при знакомстве со Scala в 2003 году, возможно, не создал бы Groovy |
| 2011 | Spock 1.0; Java 7 / invokedynamic готовит почву для ускорения |
| 2012 | Groovy 2.0 — @CompileStatic, @TypeChecked, invokedynamic |
| 2014 | Java 8 (лямбды, Stream) — вопрос "зачем Groovy" в прикладной разработке |
| 2015 | Groovy становится проектом верхнего уровня Apache Software Foundation (Apache Groovy) |
| 2020 | Groovy 3.0 — var, text blocks, switch expressions в духе новых Java |
| 2022 | Groovy 4.0 — JDK 17, модульность, Jakarta EE |
| 2020-е | Ниша: Gradle, Jenkins Pipeline, Spock, скрипты и DSL |
James Strachan за год до релиза 1.0 покинул проект; с 2007 года им руководит Guillaume Laforge. Коммерческое развитие шло через G2One (Groovy и Grails), затем SpringSource и цепочку слияний (VMware → Pivotal → EMC → Dell в 2017 году); с 2015 года язык развивается под эгидой Apache как открытый проект.
Groovy на JVM - история появления
В Java до 5–8 не хватало лаконичности — POJO с геттерами, шаблонный код, слабое скриптование. Perl, Python и Ruby показывали, как быстрее писать утилиты. На JVM уже были Jython и JRuby, но Groovy выбрал путь максимальной близости к Java по синтаксису и семантике — чтобы миллионы Java-разработчиков могли начать без смены парадигмы.
Пример сжатия (идея эпохи):
// Java — много шаблонного кода
public class Person {
private String name;
private int age;
public Person(String name, int age) { this.name = name; this.age = age; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
// Groovy — те же поля, геттеры/сеттеры неявно
class Person {
String name
int age
}
def p = new Person(name: 'Alice', age: 30)
Ключевые релизы
1.0 (2007) — стабильная грамматика, GDK (each, collect, findAll), скриптовый режим, бинарная совместимость с Java-классами на практике.
2.0 (2012) — гибридная модель: динамика по умолчанию, @CompileStatic для модулей с производительностью близкой к Java; @TypeChecked для раннего поиска ошибок без отказа от MetaClass.
3.0 / 4.0 — подтягивание синтаксиса к Java 11–17 (var, многострочные строки, улучшенная статическая компиляция), поддержка современных JVM без ломки старых скриптов.
Экосистема, которая закрепила язык
- Gradle — исполняемые
build.gradle, внутренние DSL; даже с Kotlin DSL миллионы проектов остаются на Groovy. - Jenkins — scripted/declarative pipeline, shared libraries на Groovy.
- Spock — BDD-спецификации (
given-when-then) для JVM-тестов. - Grails — full-stack с конвенциями (GORM, контроллеры); пик популярности ~2008–2014, затем конкуренция Spring Boot; Grails 3+ сам строится на Spring Boot.
- Ratpack — лёгкий фреймворк для HTTP-сервисов и веб-API.
- Griffon — фреймворк для настольных приложений на Groovy.
Groovy также встроен в платформенное ПО как язык расширения — генератор отчётов JasperReports / iReport (выражения в отчётах), SoapUI (тестовые сценарии веб-сервисов), Jenkins (автоматизация CI).
// Spock — типичный стиль
def "withdrawal fails when insufficient funds"() {
given:
account.balance = 100
when:
account.withdraw(150)
then:
thrown(InsufficientFundsException)
}
Кризис после Java 8 и современная роль
Java 8+ закрыл часть разрыва (лямбды, Stream, Optional). Groovy сохранил нишу там, где важны скрипт без класса, DSL, runtime-метапрограммирование, GString, ?., ?:, встроенные JSON/XML-билдеры.
Сегодня Groovy — инфраструктурный и спецификационный — сборка, CI, тесты, конфигурация, встраиваемые правила. Стратегия Apache Groovy — обратная совместимость и постепенная модернизация под новые JDK.
Выводы для практики
- Совместимость с Java — стратегический актив: старые скрипты и Gradle-файлы продолжают работать при обновлении Groovy.
- Нишевая специализация устойчивее, чем ставка на один фреймворк (урок Grails и инфраструктура Gradle/Jenkins).
- Гибридность (
def+@CompileStatic) — осознанный выбор по слою, а не "всё динамическое". - Институционализация (Apache PMC) важна для долгоживущих enterprise-инструментов.
Связанные материалы
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
История — История языка Ruby, История языка Rust, История языка Go, История языка Swift, История языка Kotlin, История языка Lua.