Вышел Groovy 1.1-beta-3

Рубрика: Groovy | 21 September 2007, 16:30 | Vadim Voituk

Среди значимых изменений:

  • Преодолен последний этап на пути к интеграции с Java5: теперь в Groovy можно использовать enums
  • Преобразование Map => Interface раслширено до Map => Class
  • Расширен тернарный оператор: теперь вместо a != null ? a : “default value” можно писать a ?: “default value”
    Разработчики назвали такое чудо Elvis operator и предложили пиво тому, кто первый скажет чем они думали когда выбирали такое название
  • Для фанатов метапрограммирования в ExpandoMetaClass добавлены дополнительные методы (см. документацию)
  • Добавлена возможность управлять алгоритмом resolve-инга переменных при доступе из замыканий (чесно говоря, я себе такое представляю с трудом, да документации пока нет)
  • Groovy-консоль наконец-то приобрела вменяемый вид: добавлены подсказки (на базе JLine), и базовая подсветка синтаксиса а ANSI-консолях
  • В добавок Andres Almiray, не смотря на свой переезд в США, обещал привести в порядок внешний вид графической Groovy-консоли.

Полный список изменений.

Groovy returns to GotApi

Рубрика: Development, Groovy | 13 September 2007, 13:31 | Vadim Voituk

Groovy 1.1 API documentation returns to gotAPI.com.  Thanks to Marc Dexet .

There is real motive to use gotAPI again.

Easy Singleton in Groovy

Рубрика: Development, Groovy | 30 August 2007, 11:32 | Vadim Voituk

Не раз слышал мнение, что скриптовые языки с динамической типизацией “учат писать плохо”, в отличие от “статических” языков, которые навязывают использование правильных решений aka шаблоны проектирования.
Позволю себе не согласиться с таким мнением т.к. в “умелых руках” динамические языки позволяют реализовать привычные и известные шаблоны более элегантно и красиво.

Приведу пример реализации шаблона Singleton на Groovy. [Далее...]

Groovy работа с базой

Рубрика: Development, Groovy, Java | 28 August 2007, 16:27 | juriy

Сегодня возникла простая задачка: необходимо было выбрать из базы фрагменты строк, которые соответствовали некоторым признакам. Коллега засучив рукава принялся писать громоздкий SQL запрос, который то и дело работал не так как надо. В таких случаях я пишу небольшие Java программки, которые решают проблему.

Сегодня у меня возникло желание научить коллегу писать подобные решения, но объяснять человеку как скомпилировать класс, подключить в classpath JDBC драйвера, почему нужно ловить исключения, открывать и закрывать потоки для записи файла, использовать промежуточный объект Statement не было времени. [Далее...]

Simple HTTP server in 10 lines of Groovy code [En]

Рубрика: Development, Groovy | 26 August 2007, 11:35 | Vadim Voituk

There was a simple task to get all HTTP-headers, sent by my mobile browser to web-server.
I have no time to setup some additional software to “catch” HTTP-headers, so i have write such tiny (10 lines only) Groovy script:

if (init)
	data = "";

if (line.size() > 0) {
	data += line + "\n"
} else {
	println "HTTP/1.0 200 OK\n"
	println data
	return "success"
}

Run this code in a TCP listener mode:
$ groovy -l 8000 Web2.groovy
groovy is listening on port 8000

And point your browser to http:///myserver:8000

Using Groovy instead of Ant…

Рубрика: Development, Groovy, Java | 17 August 2007, 09:26 | Vadim Voituk

… or flexible build process using Groovy

Consider you need to create 30-40 build artifacts (depending of some params) during build process.
Or maybe to embed some static data, gathered from remote servers using network protocols into your application.
Or fill-in your test database before starting unit/functional testing with data in a non-trivial way.

The classic way to solve this issue is to create a-thousands-line-long build script that is hardly readable and impossible to support.
[Далее...]

HTTP-ECHO server in 10 lines of code

Рубрика: Development, Groovy | 16 August 2007, 16:11 | Vadim Voituk

Нужно было быстро определить http-заголовки которые отправляет мой web/wap-браузер на сервер при запросе.
Написал такой 10-ти строчный скрипт на Groovy:

[java]
if (init)
	data = "";

if (line.size() > 0) {
	data += line + "\\n"
} else {
	println "HTTP/1.0 200 OK\\n"
	println data
	return "success"
}
[/java]

Запустил в режиме “listener”:
$ groovy -l 8000 Web2.groovy
groovy is listening on port 8000

Перешел в браузере на http:///myserver:8000 и вижу все заголовки, которые прислал мой браузер при запросе. Вуаля!

Не ant-ом единым…

Рубрика: Development, Groovy, Java | 10 August 2007, 08:52 | Vadim Voituk

… или гибкая сборка проекта с помощью Groovy

English version of this article

Предположим, что в пrроцессе сборки вам нужно собрать под 30-40 билдов с разными параметрами.
Или внедрить в приложение статистические данные удаленных серверов.
Или нетривиальным образом заполнить тестовую базу перед началом модульного/функционального тестирования
Ко всем прочему не хотелось в итоге вместо сценария сборки, получить кучу “хаков” больше похожих на лапшу из псевдо-кода и Ant-xml, не поддающихся модификации. [Далее...]

Groovy – it is like Visual Basic 2

Рубрика: Development, Groovy | 2 August 2007, 08:46 | Vadim Voituk

В подтверждение моей мысли о сходстве Groovy и Visual Basic популярный сайт о повышении личной продуктивности lifehacker.com опубликовал заметку под названием “Record macros in OpenOffice with Groovy“, выдержку из которой я приведу ниже:

Бесплатное  расширение к OpenOffice дает возможность записывать и запускать макросы, написанные на Groovy. Не стоит представлять Groovy как дешевую замену для Visual Basic. Groovy имеет собственный синтаксис, похожий на bash с вкраплениями Java. Если вам не хватало возможностей для написания макросов в Microsoft Office, то стоит попробовать для этих целей Groovy. К сожалению он не так просто понимается новичкам как VB/VBA. Однако, начать писать собственные простые макросы на Groovy совсем не сложно.

Groovy + JSON + Prototype in Action [English version]

Рубрика: Development, Groovy, Java, JavaScript/Ajax | 27 July 2007, 14:57 | Vadim Voituk

I’ve heard an opinion that Groovy is good only for simple utilities and prebuild scripts. In this note I’ll try to prove that this is not the way things done in a real world. I’ll try to use Groovy with a couple of popular Web 2.0 technologies.

[Далее...]

Страница 4 из 6123456