Groovy Testdrive

Рубрика: Development, Groovy | 12 May 2008, 12:18 | juriy

Начитавшись вдоволь книг и статей про Groovy мы решили опробовать этот инструмент на практике, чтобы получить о нем более полное представление. Ведь читая книги, создается образ “великого и всемогущего Groovy”. Так это или нет мы решили выяснить при помощи небольшого тест-драйва. Эта заметка – небольшой отчет о том, что у нас получилось. Команда состояла из авторов этого блога – Войтюка Вадима и Буры Юрия.
Когда в заметке встречаются рассуждения от первого лица – имеется в виду автор заметки (Юрий)
Начали мы с выбора проекта: хотелось написать что-то достаточно интересное, наглядное и разносторонее, поэтому мы остановились на простой многопользовательской игре. Первая мысль была – написать сетевой биллиард, но мы быстро поняли, что большая часть работы это физика движения шариков. Так, потратив большее количество времени на реализацию физ. движка мы, в лучшем случае, получим модель движения шайб с идеальными бортами.
Остановились на клоне всеми любимой игры Battle City. Не ставя перед собой слишком больших целей (совместного времени у нас было всего-то 5 часов) мы условились добиться синхронного движения танка на двух компьютерах.

[Далее...]

Groovy gotchas

Рубрика: Groovy | 6 May 2008, 10:44 | juriy

Есть в англоязычном айтишном мире такое выражение “gotcha”: этим понятием обозначают поведение, неожиданное для пользователя. В русском языке есть куда более родное слово, которое намного точнее описывает суть: грабли.

Вот пара маленьких грабель языка Groovy, которые я обнаружил за вчерашний вечер.

1. Сравнение и эквивалентность.
В тех книгах, которые я успел прочесть указывается: “Groovy maps the == operator to the equals( ) method in Java.” Наш ответ: вот такой вот код:

[Далее...]

Programming Groovy: Dynamic Productivity for the Java Developer

Рубрика: Development, Groovy, Книги | 24 April 2008, 12:44 | Vadim Voituk

“As moves the world, to move in tune with
changing times and ways is wisdom”
— Thiruvalluvar, Poet and Philosopher, 31 B.C

Наконец-то мне попала в руки PDF-версия книги “Programming Groovy: Dynamic Productivity for the Java Developer” (ISBN 10: 1-934356-09-3 | ISBN 13: 9781934356098) из серии “The Pragmatic Programmers”.

Предисловие к книге написал Guillaume Laforge (руководитель проекта Groovy), а приведенная выше цитата, написанная на Тамилском языке, навевает на мысль о причасности к авторству всеми любимых индийских программистов :)

В отличии от книги “Groovy in Action” издательства Manning, состоящей из 700 страниц, в этой всего – 300, что уже само по себе не может не радовать. Да и размер страницы немного меньше.

Также в отличии от GINA, рассматривается более современная версия Groovy из ветки 1.5.*, которая уже поддерживает все возмжности Java 5, и имеет ряд улучшений в API (особенно что касается Builder-ов).

Книга содержит инструкции по установке и настройке Groovy для различных ОС и IDE (Eclipse, Idea, TextMate, …), огромное количество примеров кода, демонстрирующих синтаксические возможности,  готовые примеры решения популярных задач (работа с XML, RDBMS, Ant), а также подробное описание возможностей Groovy MOP, возможностей DSL и Groovy-расширения JDK – GDK.

Конечно же в “Programming Groovy: Dynamic Productivity for the Java Developer” материал излагается не столь фундаметально как в “Groovy in Action”, но как по мне это неплохой компромис для тех, кто хочет быстро вникнуть в основы Groovy.  Для более детального понимания того, как устроен Groovy внутри советую все-таки прочесть (или хотя-бы вдумчиво пролистать:) “Groovy in Action”.
Книга пестрит примерами кода, и пропагандирует исключительно практический подод к изучению, – потому во время чтения не возникает ситуации “ниасилил многа букф” :)

А исходя из того, что Groovy неразрывно связан с Java, и самостоятельным языком для JVM станет ещё не скоро – книга все-таки расчитана больше на Java-разработчиков, чем на новичков, желающих вникнуть в достаточно новый и популярный язык Groovy.

P.S. Осталось ещё где-то  раздобыть Groovy Recipes: Greasing the Wheels of Java.

Groovy packages for Fedora/RHEL/CentOS

Рубрика: Groovy | 20 April 2008, 21:27 | Vadim Voituk

3 дня назад некий Federico Pedemonte опубликовал rpm-пакеты Groovy для Red Hat-овских дистрибутивов Fedora, RHEL и CentOS, тем самым поневоле став их maintainer-ом :)

Теперь Groovy доступен в виде пакетов для таких Linux-дистрибутивов Fedora/RHEL/CentOS, Ubuntu/Debian,  openSUSE 10.2/10.3.
Все пакеты доступны для загрузки с официального сайта Groovy.

На моем продуктивном RHEL 5.1 установка прошла гладко (ещё бы, зависимостей то у пакета нет :), а вот для запуска Groovy прийшлось отдельно установить переменную окружения GROOVY_HOME:
$ export GROOVY_HOME=/usr/share/java/groovy
$ groovy -version
Groovy Version: 1.5.5 JVM: 10.0-b19

Java + Groovy on Google AppSpot

Рубрика: Google, Groovy, Java | 14 April 2008, 09:07 | Vadim Voituk

Надеюсь что рассказывать что такое Google App Engine никому не нужно, но все же в двух словах напомню:
Google App Engine – это платформа для хостинга различных приложений на оборудовании (как не сложно догадаться) Google. Такой себе следующий шаг после генератора домашних страничек на Google Pages.
К сожалению среди языков программирования пока поддерживается только Python, но активно обсуждается и дальнейшая поддержка других языков.

Будучи приверженцем Groovy, а также ввиду того, что последнюю программу на Python я написал лет так 6-7 назад, прошу всех, кому это читает проголосовать за внедрение поддержки Java (а с ним и Groovy) в Google App Engine.
Для этого нужно всего-то зайти а баг-трекинг проекта по адресу http://code.google.com/p/googleappengine/issues/list, найти тикет с номером 1 и кликните рядом с ним звездочку.
Получится где-то так:

Также желательно, но не обязательно, написать в комментариях к тикету что-то вроде “очень хочется Java + Groovy” :)

Всем заранее спасибо!

Превращаем Java Enums в Groovy Ranges

Рубрика: Groovy, Java | 7 April 2008, 15:09 | Vadim Voituk

Идея заметки не моя, но очень мне понравилась.
Оригинал тут: Turning Java enums into Groovy ranges

Предположим что у нас есть простой Java Enum:
[java]

public enum Season {
  WINTER, SPRING, SUMMER, FALL
}

[/java]

Так как enum-ы реализуют интерфейс Comparable, то в них есть метод compareTo().
Тем не менее их значения нельзя использовать с операторами < и >.
Потому такой Java-код даже не скомпилируется
[java]if (Season.WINTER > Season.FALL) { … }[/java]

Напротив, в Groovy же, для любого класса, который реализует Comparable можно использовать операторы < и >. Потому такой Groovy-код, работает как и ожидается:
[java]assert Season.FALL > Season.WINTER[/java]

Так как enum уже реализует Comparable, то для того, чтоб превратить его в Groovy Range, осталось добавить только методы next() и previous().
Вот один из способов сделать это, используя метод ordinal() enum-а:

[java]

public enum Season {
    WINTER, SPRING, SUMMER, FALL;

    Season next() {
        Season[] vals = Season.values();
        return vals[(this.ordinal() + 1) % vals.length];
    }

    Season previous() {
        Season[] vals = Season.values();
        return vals[(this.ordinal() - 1 + vals.length) % vals.length];
    }
}

[/java]

Теперь в Groovy можно написать так:
[java]

(Season.WINTER..Season.FALL).each {
    println it
}
// ...
for (s in Season.values()) {
    println (s++)
}
// ...
for (s in Season.values()) {
    println (s--)
}

[/java]

Налицо использование, принятой в Groovy, концепции Duck Typing, когда нас не обязуют декларировать реализацию интерфейся для использования с языковыми операторами (в данном случае “больше-меньше”). Достаточно только реализовать необходимые методы, без указания какого-либо дополнительного implements в сигнатуре класса.

Кстати в Java есть метод EnumSet.range(), который возвращает коллекцию значений enum-а, которая в свою очередь может быть использована в Java5 for-each цикле:
[java]for (Season s : EnumSet.range(Season.WINTER, Season.FALL) { … }[/java]
Но в в таком случае использование операторов < и > все равно не допускается.

Впечатления от Exception #7

Рубрика: Development, Groovy | 17 March 2008, 18:40 | Vadim Voituk

Думаю все, кому это могло быть интересно, уже слышали о том, что 15 марта в Киеве проходила конференция по динамическим языкам программирования Exception #7.

На ней я должен был делать доклад о Groovy, но ввиду неприятных обстоятельств приехать мне удалось только ко времени начала своего доклада.
Вроде бы ничего, – мог бы отдышаться, и с 5тиминутным опозданием начать доклад.
Но тут мне “свинью” подсунули сами организаторы конференции, – они отменили мое выступление, объеденив 2 зала на докладе про PEAK-Rules. (кстати не очень удачном)
И это при том, что за час до начала конференции договорился с ними о том, чтоб поменять местами мой доклад о Groovy с докладом Андрея Уварова о Grails.
Да и сообщили мне об этом уже постфактум, когда я уже был на подьезде.
Вообщем нехорошо поступили :)

Из всех докладов я побывал на PEAK-Rules (чесно-говоря так и не понял какую задачу он решает, потому ушел раньше), на докладе о Grails (впечатление сложилось нормальное, а вопросы из зала порой удивляли) и прямо с ноутбука просмотрел дэмки Романа перед его выступлением о Jython & JRuby (не впечатлило – Groovy Rulezz!).
Тем не менее успел “поздороваться” со всеми, с кем планировал и весь в расстроенных чувствах с испорченным настроением и поцарапанной машиной поехал домой :(

Ещё раз приношу свои извинения тем, кто расчитывал послушать рассказ о таком чудесном языке как Groovy, и чтоб хоть как-то реабилитироваться выкладываю здесь слайды презентации и текст черновика-шпаргалки, которой я планировал пользоваться во время выступления.

Добавлено:
Вот кстати Yandex.Blog уже на-crawler-ил на отзыв о мероприятии от Alexander Dolgin

А вот ещё отзывы от sash_ko.

Видео со встречи DoU 8.11.2007

Рубрика: Development, Groovy | 2 February 2008, 16:27 | Vadim Voituk

Разгребая архивы RSS-ленты снова наткнулся на видео со встречаи developers.org.ua от 8 октября 2007 г., где я делал доклад о Groovy.
Так и не дождавшись, пока кто-либо выложит его на YouTube – решил сам выложить его на RuTube.
Итого 83 минуты и 234Мб видео в формате flv:

Groovy Zone on DZone

Рубрика: Groovy | 18 January 2008, 11:30 | Vadim Voituk

Не так давно мы с Юрой разобрали стектрейс ошибки популярного среди разработчиков ресурса DZone.com, а уже через неделю, DZone заставил снова обратить на себя внимание, – усилиями Andres Almiray был опубликован Groovy Zone – подраздел DZone полностью посвященый Groovy & Grails.

Пока статей там не очень много, но думаю это очень быстро будет исправлено.

Теперь, вместе с Groovy Zone, на DZone уже существуюет 26 “зон” по разным направлениям – каждый найдет себе тематику по вкусу:).

Free Netbeans 6 CD/DVD

Рубрика: Groovy, Ссылки | 15 December 2007, 23:07 | Vadim Voituk

К сожалению ещё не удалось попробовать поддержку Groovy в NetBeans 6, но отзывы о нем уже читал/слышал очень положительные.

Так вот я это к тому, что разгребая старый хлам, наткнулся на CD NetBeans 5.5, в свое время любезно присланный Sun – и решил заказать на CD/DVD 6-ю версию.
Недолгосрочное гугление вывело на страницу заказа бесплатного DVD NetBeans 6
Жду доставки, а после постараюсь описать свои впечатления от использования NetBeans 6+Groovy

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