Groovy | это... Что такое Groovy? (original) (raw)
Groovy
Появился в: | 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):
- Статическая и динамическая типизация
- Встроенный синтаксис для списков, ассоциативных массивов, массивов и регулярных выражений
- Замыкания
- Перегрузка операций
Содержание
- 1 Пример
- 2 Особенности работы
- 3 История
- 4 Поддержка IDE
- 5 Использование Groovy
- 6 См. также
- 7 Примечания
- 8 Ссылки
Пример
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() } }
Особенности работы
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], в частности:
- IntelliJ IDEA начиная с версии 7 или для более ранних версий с использованием JetGroovy Plugin;
- Eclipse с использованием Groovy Eclipse;
- Netbeans — встроен в NetBeans IDE.
Использование Groovy
Последние версии генератора отчётов iReport, основанного на java-библиотеке JasperReports, позволяют встраивать в отчёты выражения на Groovy и писать на нём дополнительную логику.
Система непрерывной интеграции Hudson позволяет использовать сценарии автоматизации, созданные на Groovy.
См. также
- Grails
- Сравнение возможностей Groovy с другими языками см. в статье Сравнение языков программирования
Примечания
- ↑ James Strachan. Groovy — the birth of a new dynamic language for the Java platform
- ↑ 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»
- ↑ Список поддерживаемых IDE на официальном сайте Groovy
Ссылки
Портал «Свободное программное обеспечение» | |
---|---|
Groovy в Викиучебнике? | |
Лицензия Groovy в Викитеке? |
- Home (англ.). — домашняя страница проекта. Архивировано из первоисточника 14 февраля 2012. Проверено 5 июня 2006.
- JSR 241: The Groovy Programming Language (англ.). JSRs: Java Specification Requests. — домашняя страница проекта. Архивировано из первоисточника 14 февраля 2012. Проверено 5 июня 2006.
- volte, volte Язык программирования Groovy (рус.). — блог. Архивировано из первоисточника 14 февраля 2012. Проверено 18 июня 2008.
- Хики, Скотт Groovy на практике: сокращение кода с помощью Groovy (19 сентября 2006). Архивировано из первоисточника 14 февраля 2012. Проверено 26 ноября 2006.
- Эндрю, Гловер Развитие Groovy (рус.) (01 ноября 2007). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Эндрю, Гловер Разметка с помощью Groovy Builders (рус.) (12 октября 2007). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Эндрю, Гловер Функциональное программирование с помощью использованием замыканий и карринга (рус.) (09 января 2008). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Эндрю, Гловер Подмешайте немного Groovy в приложения Java (рус.) (14 февраля 2008). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Эндрю, Гловер Ускорение модульного тестирования кода Java с помощью Groovy (рус.) (25 декабря 2007). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Эндрю, Гловер Написание сценариев Ant с помощью Groovy (рус.) (21 января 2008). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Эндрю, Гловер Программирование JDBC с помощью Groovy (рус.) (12 декабря 2007). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Эндрю, Гловер Вперед, на сервер, с Groovy (рус.) (30 января 2008). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Чэд, Медоуз Углубитесь в Hierarchical Inherited Rule-Interpreted XML (рус.) (30 августа 2007). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Эндрю, Гловер MOP и мини-языки (рус.) (06 февраля 2008). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Эндрю, Гловер Хитрые операторы (рус.) (04 сентября 2008). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- An introduction to Groovy (англ.). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Open Directory: Java: Extensions: Groovy (англ.). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Groovy for the Office (англ.). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Groovy Zone - DZone Groovy news aggregator (англ.). Архивировано из первоисточника 14 февраля 2012. Проверено 7 сентября 2008.
- Плагин для языка Groovy для IDE IntelliJ IDEA
Java | ||
---|---|---|
Платформы | Java Card • Java ME • Java SE • Java EE | |
Технологии Sun | Java • Java Development Kit • OpenJDK • WTK • Java Virtual Machine • JavaFX • JAXP • Squawk | |
Основные сторонние технологии | GNU Classpath • GNU компилятор для Java • Kaffe • TopLink • Apache Harmony • Apache Struts • Spring Framework • Dalvik • Hibernate • JBoss • Processing • Dozer • AspectJ | |
История | История версий Java • Критика Java • Java Community Process • Sun Microsystems • Свободные реализации Java | |
Свойства языка | Байткод • Синтаксис • Апплеты • Сервлеты • Мидлеты • JavaServer Pages • Web Start • Enterprise JavaBeans | |
Скриптовые языки | Java Tcl • Jython • JRuby • BeanShell • Groovy • Judoscript • Sleep • Bean Scripting Framework • Yoix • Rhino | |
Конференции Java | JavaOne |