WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте
Groovy
Класс языка язык программирования, объектно-ориентированный язык программирования, императивный язык программирования[d], сценарный язык, язык функционального программирования, мультипарадигмальный язык программирования, интерпретируемый язык программирования и JVM language[d]
Появился в 2003
Автор Джеймс Стрэкен
Разработчик Java Community Process
Расширение файлов .groovy
Выпуск 2.4.8[1] (19 января 2017)
Система типов статическая и динамическая
Испытал влияние Java, Ruby, Python, Perl, Smalltalk
Повлиял на Kotlin, Swift
Лицензия Apache License 2.0
Сайт groovy-lang.org

Groovy — объектно-ориентированный язык программирования, разработанный для платформы Java как дополнение к языку Java с возможностями Python, Ruby и Smalltalk.

Использует Java-подобный синтаксис с динамической компиляцией в JVM байт-код и напрямую работает с другим Java-кодом и библиотеками. Язык может использоваться в любом Java-проекте или как скриптовый язык.

Groovy завершил процесс стандартизации в Java Community Process (JSR 241).

Основные возможности языка, отличающие его от Java: как статическая, так и динамическая типизация; встроенный синтаксис для списков, ассоциативных массивов, массивов и регулярных выражений; перегрузка операций. Замыкания в Groovy появились задолго до Java. На Groovy создан веб-фреймворк Grails, основное применение язык нашёл именно в сочетании с ним.

История

Первым упоминанием о языке было сообщение в блоге Джеймса Стрэчена (англ. James Strachan)[2] от августа 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 году)[3].

Проект разработки языка и комитет JSR-241 с 2007 года возглавляет Гийом Лафорж (Guillaume Laforge). Компанию G2One, занимавшуюся развитием и коммерциализацией языка и фреймворка Grails, осенью 2008 года приобрела SpringSource[en], в итоге через цепочку слияний и поглощений (VMware, Pivotal, EMC) актив перешёл в 2017 году в корпорацию Dell. С 2015 года язык является проектом верхнего уровня фонда Apache.

Поддержка IDE

Программирование на Groovy поддерживается в основных интегрированных средах разработки программного обеспечения[4], в частности:

  • IntelliJ IDEA начиная с версии 7 или для более ранних версий с использованием JetGroovy Plugin;
  • Eclipse с использованием Groovy Eclipse;
  • Netbeans — встроен в NetBeans IDE.

Использование Groovy

Последние версии генератора отчётов iReport, основанного на Java-библиотеке JasperReports, позволяют встраивать в отчёты выражения на Groovy и писать на нём дополнительную логику.

Система непрерывной интеграции Jenkins позволяет использовать сценарии автоматизации, созданные на Groovy.

Примеры

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()
  }
}

Ещё пример, демонстрирующий возможности синтаксиса Groovy. Следующий простой Groovy-скрипт может быть прямо в этом виде исполнен:

 ["Rod", "Carlos", "Chris"].each{println it}

Элементы списка (выглядит, как массив, но это список) будут напечатаны.

Особенности работы

В отличие от Java, в 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

Groovy неявно генерирует методы для доступа к переменным (setColor(String color) и getColor()):

class AGroovyBean {
  String color
}

def myGroovyBean = new AGroovyBean()

myGroovyBean.setColor('blue')
assert myGroovyBean.getColor() == 'blue'

myGroovyBean.color = 'green'
assert myGroovyBean.color == 'green'

Groovy предлагает простой и последовательный доступ к спискам, отображениям и массивам:

def myList = ['One', 'Two', 'Three']  //выглядит как массив, но это список
assert myList[2] == 'Three'
myList[3] = 'Four'  //добавляем элемент в список
assert myList.size() == 4

def monthMap = [ 'January' : 31, 'February' : 28, 'March' : 31 ]  //определяем ассоциативный массив
assert monthMap['March'] == 31  
monthMap['April'] = 30  //добавляем элемент в ассоциативный массив
assert monthMap.size() == 4

Closure (замыкание) — это анонимная функция и объект в одном виде:

def closureFunction = {a, b ->
    println a
    println b
}

closureFunction(1, 2)

return в функции указывать не обязательно — по умолчанию будет возвращено значение последней упомянутой переменной.

Неизменяемые классы маркируются с помощью аннотации Immutable:

@Immutable
class ImmutableClass {
    String stringVariable
    Integer integerVariable
}
def newVariable = new ImmutableClass(stringVariable : "some string", integerVariable : 23)

Примечания

  1. The Apache Groovy programming language - Groovy 2.4.8 Changelog
  2. James Strachan. Groovy — the birth of a new dynamic language for the Java platform Архивировано 5 апреля 2007 года.
  3. Scala as the long term replacement for java/javac? (July 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»
  4. Список поддерживаемых IDE Архивировано 4 февраля 2008 года. на официальном сайте Groovy Архивировано 2 марта 2014 года.

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии