Последняя версия Apache Groovy доступна с совершенно новым парсером (под кодовым названием Parrot) среди других улучшений. Groovy-это опционально типизированный и динамический язык с возможностями статической типизации и статической компиляции для платформы Java.
Цель Groovy — повысить производительность разработчиков благодаря его лаконичному, знакомому и простому в освоении синтаксису. Разработчики говорят, что он плавно интегрируется с любой программой Java и предоставляет мощные функции, включая возможности написания сценариев, разработку специфичных для домена языков, метапрограммирование во время выполнения и компиляции и функциональное программирование.
Groovy имеет как динамическую природу (поддержка стилей кода, подобных Ruby и Python), так и статическую природу (поддержка стилей, подобных Java, Kotlin и Scala). Разработчики Groovy стремятся поддерживать и улучшать оба этих аспекта языка. В этом выпуске Groovy был улучшен, чтобы лучше управлять нулевыми значениями. Вы можете использовать оператор null-safe навигации Groovy, piggy back на Java по желанию или предоставить расширение проверки null для проверки типов. Они дополнены в Groovy 3 с помощью безопасной индексации null для массивов, списков и карт и нового преобразования AST @NullCheck для автоматического инструментирования кода с проверками null.
Повышение производительности было достигнуто за счет использования более эффективного разрешения типов во время компиляции.Добавление спецификации Maven (BOM) позволяет более гибко использовать Groovy из других проектов.
Новый парсер Parrot описывается как более гибкий и ремонтопригодный, чем парсер в предыдущих версиях Groovy. Он называется Parrot parser, потому что в первые дни создания парсера цель состояла в том, чтобы вывод нового парсера был точным эхом того, что производил старый парсер. С тех пор он был расширен для поддержки дополнительных параметров синтаксиса и языковых функций.
Другие улучшения включают поддержку цикла класса do/while Java, а также поддержку более сложной формы классического цикла for Java с выражениями, разделенными запятыми. Также добавлена поддержка инициализации массивов в стиле Java и лямбда-выражений.