Groovy | это... Что такое Groovy? (original) (raw)

Groovy

Groovy-logo.png
Появился в: 2003
Автор(ы): Джеймс Стрэчен
Релиз: 2.0.5 (4 октября 2012 года)
Типизация данных: статическая и динамическая
Испытал влияние: Java, Ruby, Python, Perl, Smalltalk
Сайт: http://groovy.codehaus.org

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

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

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

Возможности Groovy (отличающие его от Java):

Содержание

Пример

class Foo { def doSomething() { def data = ["name": "James", "location": "London"] for (e in data) { println("entry e.keyis{e.key} is e.keyis{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

Groovlets — возможность запускать скрипты на Groovy как сервлеты.

GroovyBeans — версия Groovy для JavaBeans.

В отличие от 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)

История

Первым упоминанием о языке Groovy было в сообщение в блоге Джеймса Стрэчена (англ. James Strachan (programmer))[1] от августа 2003 года. Позднее было выпущено несколько версий между 2004 и 2006 годами. После того, как начался процесс стандартизации JCP, нумерация версий была изменена, и версию называют «1.0». Версия «1.0» была выпущена 2 января 2007 года. В декабре 2007 года вышел Groovy 1.1, эта версия вскоре была перенумерована как «1.5» вследствие значительных изменений в языке.

Стрэчен покинул проект за год до релиза Groovy 1.0 в 2007 году, а в июле 2009 года Стрэчен написал в своём блоге, что возможно не создал бы Groovy, если бы в 2003 году прочитал книгу Мартина Одерского (англ. Martin Odersky) с соавторами о программировании на языке Scala (вышедшую в 2007 году)[2].

Проект разработки языка и комитет JSR-241 с 2007 года возглавляет Гийом Лафорж (Guillaume Laforge).

Поддержка IDE

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

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

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

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

См. также

Примечания

  1. James Strachan. Groovy — the birth of a new dynamic language for the Java platform
  2. Scala as the long term replacement for java/javac? (July 6, 2009). Архивировано из первоисточника 10 февраля 2012. Проверено 7 января 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»
  3. Список поддерживаемых IDE на официальном сайте Groovy

Ссылки

П: Портал «Свободное программное обеспечение»
b: Groovy в Викиучебнике?
s: Лицензия Groovy в Викитеке?
Просмотр этого шаблона Основные языки программирования (сравнениеIDEисторияхронология)
Используемыев разработке АдаAPLЯзык ассемблераActionScriptABAP/4AutoItAWKБейсикСиКоболC++C#ClarionClojureColdFusionCommon LispDdBaseDelphiEiffelErlangEuphoriaF#ФортФортранGambasGoGroovy • HAL/S • HaskellIconJavaJavaScriptLimboLuaМодула-3Object PascalObjective-COCamlOzParserПаскальКомпонентный ПаскальPerlPHPPowerBASICPythonПЛ/1ПрологRubyScalaSchemeSmalltalkSQLPL/SQLTclValaVisual Basic (.NET)
Академические AgdaCleanCurryЛогоMLРЕФАЛСимулаОберон
IEC 61131-3 Instruction ListSTFBDLadder Diagram (LD) • SFC
Прочие АлголАлгол 68Модула-2МирандаHope
Эзотерические HQ9+/HQ9++ • INTERCALBrainfuck • Brainfork • BefungeMalbolgePietSpoonUnlambdaWhitespaceFALSELOLCODE
Визуальные G (LabVIEW) • Microsoft VPLSikuliVisSimАлисаДРАКОНСкретч
Просмотр этого шаблона Java
Платформы Java CardJava MEJava SEJava EE Wave.svg
Технологии Sun JavaJava Development KitOpenJDKWTKJava Virtual MachineJavaFXJAXPSquawk
Основные сторонние технологии GNU Classpath • GNU компилятор для Java • Kaffe • TopLink • Apache HarmonyApache StrutsSpring Framework • Dalvik • HibernateJBoss • Processing • Dozer • AspectJ
История История версий JavaКритика JavaJava Community ProcessSun Microsystems • Свободные реализации Java
Свойства языка Байткод • Синтаксис • АпплетыСервлетыМидлетыJavaServer PagesWeb StartEnterprise JavaBeans
Скриптовые языки Java Tcl • JythonJRubyBeanShellGroovy • Judoscript • Sleep • Bean Scripting Framework • Yoix • Rhino
Конференции Java JavaOne