Groovy
| Groovy | |
|---|---|
| | |
| Класс языка | объектно-ориентированный, императивный, сценарный, функциональный, мультипарадигмальный, интерпретируемый, язык JVM, открытое программное обеспечение, свободное программное обеспечение и проект Фонда Apache[вд] |
| Появился в | 2003 |
| Автор | Джеймс Стрэкан[вд] |
| Разработчик | Java Community Process и Apache Software Foundation |
| Расширение файлов |
.groovy[2], .gvy[2], .gsh[2] или .gy[2] |
| Выпуск | |
| Испытал влияние | Python, Java, Ruby, Perl и Smalltalk |
| Лицензия | Apache License 2.0 |
| Сайт |
groovy-lang.org (англ.) groovy.apache.org |
| ОС | кроссплатформенность |
Groovy — объектно-ориентированный язык программирования, разработанный для платформы Java как дополнение к языку Java с возможностями Python, Ruby и Smalltalk.
Использует java-подобный синтаксис с динамической компиляцией в JVM байт-код и напрямую работает с другим java-кодом и библиотеками. Язык может использоваться в любом java-проекте или как сценарный язык. Активно используется как Предметно-ориентированный язык для написания скриптов при работе в предметной области (от математики до обработки научных данных), а также сборки и тестирования приложений (Gradle).
Groovy завершил процесс стандартизации в Java Community Process (JSR 241).
Основные возможности языка, отличающие его от Java: как статическая, так и динамическая типизация; встроенный синтаксис для списков, ассоциативных массивов, массивов и регулярных выражений; перегрузка операций. Замыкания в Groovy появились задолго до Java.
На Groovy создано ряд популярных веб-фреймворков, в том числе Grails и Ratpack, фреймворк для создания настольных приложений Griffon[англ.], платформа тестирования Spock[англ.].
Язык нашёл применение в качестве сценарного для расширения возможностей платформенного программного обеспечения. В частности, генератор отчётов iReport, основанный на Java-библиотеке JasperReports, позволяет встраивать в отчёты выражения на Groovy и писать на нём дополнительную логику. Система непрерывной интеграции Jenkins позволяет использовать сценарии автоматизации, созданные на Groovy. Приложение для тестирования веб-сервисов SoapUI поддерживает написание тестовых сценариев на Groovy[3].
Программирование на Groovy поддерживается в основных интегрированных средах разработки[4], в том числе IntelliJ IDEA (начиная с версии 7 или для более ранних версий с использованием JetGroovy Plugin), Eclipse (с использованием Groovy Eclipse), Netbeans (встроен), VS Code (через расширение), Vim (через расширение).
История
Первым упоминанием о языке было сообщение в блоге Джеймса Стрэкана (англ. James Strachan)[5] от августа 2003 года. Позднее было выпущено несколько версий между 2004 и 2006 годами. После того, как начался процесс стандартизации JCP, нумерация версий была изменена, и версию называют «1.0». Версия «1.0» была выпущена 2 января 2007 года. В декабре 2007 года вышел Groovy 1.1, эта версия вскоре была перенумерована как «1.5» вследствие значительных изменений в языке.
Стрэкан покинул проект за год до выпуска Groovy 1.0 в 2007 году, а в июле 2009 года Стрэкан написал в своём блоге, что возможно не создал бы Groovy, если бы в 2003 году прочитал книгу Мартина Одерского с соавторами о программировании на языке Scala (вышедшую в 2007 году)[6].
Проект разработки языка и комитет JSR-241 с 2007 года возглавляет Гийом Лафорж (Guillaume Laforge). Компанию G2One, занимавшуюся развитием и коммерциализацией языка и фреймворка Grails, осенью 2008 года приобрела SpringSource[англ.], в итоге через цепочку слияний и поглощений (VMware, Pivotal, EMC) актив перешёл в 2017 году в корпорацию Dell. С 2015 года язык является проектом верхнего уровня фонда Apache.
В 2020 году вышла версия 3.0.0 с рядом значительных улучшений.

Примеры
Классический пример вывода на печать строки с приветствием:
// Comment
print("Hello world!")
Пример создания и использования функции с аргументами и возвращаемым значением:
def helloFunction(name) {
println("Hello, ${name}")
}
helloFunction("Groovy!")
// В следующей функции вычисления суммы двух объектов
// последнее выражение является возвращаемым значением
def sum(a, b) {
a + b // вернет результат сложения
}
print(sum(1, 2))
// Эта функция принимает параметры только числового типа
def subtraction(double a, double b) {
return a - b
}
print(subtraction(6, 4))
Объявление класса, создание его экземпляра и вызов его методов в главной точке входа программы (статический метод main())
class Foo {
def doSomething() {
def data = ["name": "James", "location": "London"]
for (e in data) {
println("entry ${e.key} is ${e.value}")
}
}
def closureExample(collection) {
collection.each { println("value ${it}") }
}
static void main(args) {
def values = [1, 2, 3, "abc"]
def foo = new Foo()
foo.closureExample(values)
foo.doSomething()
}
}
«;» — точка с запятой в конце строки не обязательна.
Некоторые особенности
Как и в Java (начиная с 11-й версии), исходный код Groovy может быть выполнен как обычный сценарий: для этого он должен содержать код вне определения класса или класс с методом main, или Runnable, или GroovyTestCase:
#!/usr/bin/env groovy
println "I can execute this script now!"
Строки в Groovy: Java Strings с одинарными кавычками и GStrings с двойными кавычками:
def javaStyleString = 'java String style'
def GStringsStyleString = "${javaStyleString}"
def j = '${javaStyleString}'
def bigGroovyString = """
${javaStyleString}
${GStringsStyleString}
"""
println bigGroovyString
Передачу параметров в методы, замыкания или функции можно делать без скобок:
closureFunction 1,2
Примечания
- ↑ Release 5.0.8 — 2026.
- ↑ 1 2 3 4 https://blog.mrhaki.com/2011/10/groovy-goodness-default-groovy-script.html
- ↑ SOAP UI: Sample Scripts on Groovy.
- ↑ Список поддерживаемых IDE Архивировано 4 февраля 2008 года. на официальном сайте Groovy Архивировано 2 марта 2014 года.
- ↑ James Strachan. Groovy — the birth of a new dynamic language for the Java platform Архивировано 5 апреля 2007 года.
- ↑ Scala as the long term replacement for java/javac? (6 июля 2009). Дата обращения: 7 января 2012. Архивировано 10 февраля 2012 года. «I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I’d probably have never created Groovy»
Ссылки
- Home (англ.). — домашняя страница проекта. Дата обращения: 5 июня 2006. Архивировано 13 февраля 2012 года.
- JSR 241: The Groovy Programming Language (англ.). JSRs: Java Specification Requests. — домашняя страница проекта. Дата обращения: 5 июня 2006. Архивировано 13 февраля 2012 года.
- https://ru.wikibooks.org/wiki/Groovy - Учебник по языку Groovy.
- Хики, Скотт. Groovy на практике: сокращение кода с помощью Groovy (19 сентября 2006). Дата обращения: 26 ноября 2006. Архивировано 13 февраля 2012 года.
- Эндрю, Гловер. Развитие Groovy (1 ноября 2007). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Эндрю, Гловер. Разметка с помощью Groovy Builders (12 октября 2007). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Эндрю, Гловер. Функциональное программирование с помощью использованием замыканий и карринга (9 января 2008). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Эндрю, Гловер. Подмешайте немного Groovy в приложения Java (14 февраля 2008). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Эндрю, Гловер. Ускорение модульного тестирования кода Java с помощью Groovy (25 декабря 2007). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Эндрю, Гловер. Написание сценариев Ant с помощью Groovy (21 января 2008). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Эндрю, Гловер. Программирование JDBC с помощью Groovy (12 декабря 2007). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Эндрю, Гловер. Вперед, на сервер, с Groovy (30 января 2008). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Чэд, Медоуз. Углубитесь в Hierarchical Inherited Rule-Interpreted XML (30 августа 2007). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Эндрю, Гловер. MOP и мини-языки (6 февраля 2008). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Эндрю, Гловер. Хитрые операторы (4 сентября 2008). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Groovy for the Office (англ.). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Groovy Zone - DZone Groovy news aggregator (англ.). Дата обращения: 7 сентября 2008. Архивировано 13 февраля 2012 года.
- Плагин для языка Groovy для IDE IntelliJ IDEA
- Изменения в языке версии 3.0
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.