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 с рядом значительных улучшений.

Скриншот Groovy Console

Примеры

Классический пример вывода на печать строки с приветствием:

// 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

Примечания

  1. Release 5.0.8 — 2026.
  2. 1 2 3 4 https://blog.mrhaki.com/2011/10/groovy-goodness-default-groovy-script.html
  3. SOAP UI: Sample Scripts on Groovy.
  4. Список поддерживаемых IDE Архивировано 4 февраля 2008 года. на официальном сайте Groovy Архивировано 2 марта 2014 года.
  5. James Strachan. Groovy — the birth of a new dynamic language for the Java platform Архивировано 5 апреля 2007 года.
  6. 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»

Ссылки

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.

  1. 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:
  2. 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.
  3. 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.
  4. 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.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.