What is groovy

Рубрика: Development, Groovy, Java | 26 January 2007, 18:31 | Vadim Voituk

Около полугода назад я впервые познакомился с Groovy – динамическим языком для платформы Java.
Он включает разнообразный syntax-sugar (как бы так правильно перевести?) из Python, Ruby, Smalltalk но при этом использует всю мощь JRE и близкий к Java синтаксис.
Вариантов для использоавния такого чуда техники масса: от написания рабочих простеньких утилит и shell-скриптов, до продуктивной разработки web-приложений, тест-кейсов, и сценариев сборки.
Кстати для последних двух задач у Groovy есть встроенные средства: поддержка Ant и JUnit на уровне языка.
Т.к. Groovy компилируется в .class – файлы, то связать поделки на Groovy с Java-программой труда не составляет.
Таким образом проект может быть запрототипирован на Groovy, а потом, при необходимости, понемногу заменять его Java-кодом.

Программа HelloWorld на Groovy будет выглядеть так:

println "Hello world!" // ";" можно не ставить 

Компиляция

groovyс Hello.groovy

На выходе получаем Hello.class
Запуск

groovy Hello

Т.к. в динамических языках фаза компиляции часто опускается, достаточно просто

 groovy Hello.groovy

По аналогии с Python у Groovy есть графическая (groovyConsole) и текстовая (groovysh) консоль.
Ввод команд в консоль необходимо завершать вызовом команды “go”.
Также достаточно интересной мне кажется команда “inspect” – открывает Groovy Object Browser на последней выполненой операции – такая себе минимальная IDE.

Но это все мелочи жизни.
Самое интересное в Groovy это поддержка на уровне синтаксиса списков, хэш-таблиц и замыканий:

[ 10, 20, 40, "Vadim", "Hello" ].each({println it});

или ещё веселее

["Brett":100, "Pete":"Did not finish", "Andrew":86.87934 ].each{it,val ->
println it  + "=>" + val
}

И под конец хотелось бы добавить о возможности доступа к членам класса а-ля JavaBeans (вылетело из головы название термина) и передаче значений параметров в конструктор.

import javax.swing.*
def x = new JFrame(title:"Hello", size:[200, 300],
defaultCloseOperation:JFrame.EXIT_ON_CLOSE)
x.visible = true

Для “затравки” приведу ещё ссылку на статью “GUI in IronPython, Groovy and JRuby“, предлагается построить простенький GUI на 3х скриптовых языках, а также ссылку на колонку “Practically Groovy” на сайте IBM.

Комментариев: 2

2 Responses to “What is groovy”

Комментарии:

Leave a Reply