Groovy
Groovy | |
---|---|
| |
Класс языка | объектно-ориентированный, императивный, сценарный язык, язык функционального программирования, мультипарадигмальный, интерпретируемый, язык JVM, открытое программное обеспечение и свободное программное обеспечение |
Появился в | 2003 |
Автор | Джеймс Стрэкан[вд] |
Разработчик | Java Community Process и Apache Software Foundation |
Расширение файлов |
.groovy [2], .gvy [2], .gsh [2] или .gy [2] |
Выпуск | |
Испытал влияние | Python, Java, Ruby, Perl и Smalltalk |
Лицензия | Apache License 2.0 и лицензия Apache |
Сайт |
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 4.0.22 — 2024.
- ↑ 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