Groovy

28 June 2007, 09:17 | Vadim Voituk

Groovy – объектно-ориентированный язык программирования разработанный для платформы Java как альтернатива языку Java с возможностями из Python, Руби, и Smalltalk.
Groovy использует Java подобный синтаксис с динамической компиляцией в JVM байт-код и напрямую работает с другим Java кодом и библиотеками.
Домашняя страница проекта: http://groovy.codehaus.org

Grails – фреймворк для создания web-приложений, написанный на Groovy с использованием Spring, Hibernate, Sitemesh. Grails исповедует идеи заложенные в фреймворке Ruby On Rails, и проецирует их в мир Java-технологий.

К сожалению русскоязычное сообщество пользователей Groovy & Grails пока достаточно бедно, потому если кт-то использует Groovy или Grails – просьба сообщить мне для формирования русскоязычного комьюнити.

Заметки, посвященные Groovy & Grails:

  1. What is groovy
  2. What non-Java language are you most interested in running on the JVM?
  3. Groovy: Extracting XML from your database (RU)
  4. Groovy documentation linkdump
  5. Groovy + JSON + Prototype in Action (РУС / ENG)
  6. Assertion based examples
  7. Groovy – it is like Visual Basic
  8. Groovy: if для невнимательных
  9. Groovy & GRails video
  10. More GRails video
  11. Не ant-ом единым… (РУС / ENG)
  12. Презентация Groovy на Exception#7
  13. and more

Неплохие заметки можно найти в разделе “Practically Groovy” на сайте IBM(к сожалению качество их русского перевода хромает)

  1. Сокращение кода с помощью Groovy (РУС / ENG)
  2. Программирование JDBC с помощью Groovy (РУС / ENG)
  3. Ускорение мобульного тестирования Java-кода с помощью Groovy (РУС / ENG)
  4. Функциональное программирование с помощью использованием замыканий и карринга (РУС / ENG)
  5. Написание сценариев Ant с помощью Groovy (РУС / ENG)
  6. Meta Object Protocol и мини-языки (РУС / ENG)
  7. Подмешайте немного Groovy в приложения Java (РУС / ENG)
  8. Fluently Groovy (ENG)
  9. ссылки на остальные русскоязычные статьи буду добавлять по мере нахождения
  10. PLEAC-Groovy [ENG]

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

37 Responses to “Groovy”

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

  1. axyd

    Привет Вадим!

    Я пытаюсь использовать грайлс в одном проекте, к сожалению пока с переменным успехом, много ошибок и сообщения о них не информативные. :(

    Но концепция и сама разработка на нём мне нравиться.

  2. Vadim Voituk

    Приятно узнать, что кто-то на просторах руНета использует Grails.
    Было бы интересно унать о реальном проекте на Grails.

  3. axyd

    Уффф, 1 неделя в среднем по 4 часа в день, прочёл “Груви ин экшен” и разбирался с ним.

    Офигенный недостаток, у него временами бывают совершенно неочевидные ошибки или он ведёт себя совершенно неочевидным способом. На разбор которых может уйти от 2х до 5 часов.

    Слишком много времени на ошибки …
    ———————————–

    И с самим груви тоже проблемы и ошибки, если попробовать написать на нём не хело ворлд одним скриптом а боль-менее реальный проект (с автозагрузкой изменённых файлов).

    Например он не может динамически загружать два класса которые ссылаются друг на друга и находяться в разных файлах (через ГрувиСкриптЕнжин ) – ошибка.

    Посмотрел исходники, но там реально чёрт ногу сломит или нужно сидеть неделю чтобы вьехать.

    Короче я пока рисковать не буду. Можно использовать для встраивания кусочков в сущ. приложение. Создавать на нём пока рановато.

  4. Vadim Voituk

    axyd: Спасибо за столь обширный комментарий.

    Сразу с чем хочется согласиться – это неочевидность выводимых Groovy ошибок – приходится traceBack вычитывать чтоб понять что он от тебя хочет.
    Но с опытом разработки и приходящим пониманием того, что стоит за фассадом языка – подобные неудобства уходят.

    Насчет невозможности загрузить 2 класса через GroovyScriptEngine – не пробовал, но посоветовал бы пошаманить над GroovyClassLoader-ом (IMHO он больше к такой задаче приспособлен)
    Кстати примеры есть в “Groovy In Action”.

  5. kirpi

    а grails подходит для разработки на java? или только на groovy?
    что есть подобное ruby on rails для java?
    извините за глупые вопросы

  6. Vadim Voituk

    Подходит и для разработки на Java.
    Единственное что все-равно прийдется описывать Domain-классы на Groovy.

  7. kirpi

    а gsp страницы? или можно и jsp использовать?

  8. Vadim Voituk

    А чем принципиально GSP от JSP отличаются? Да почти ничем.
    Но как ни крути от Groovy вы никуда в Grails не уйдете.
    Да и нужно ли?
    Мало ли фреймворков на Struts+SiteMesh+Hibernate…

  9. Overmind

    Возможно, я в корне не понимаю эту технологию, следовательно такой вопрос. Можно ли использовать Groovy как обычный скриптовый язык вкупе с Apache с помощью CGI? (как, скажем Perl). Пробовал настроить классическим способом, плевалась непонятная ошибка. Спасибо.

  10. Vadim Voituk

    В принципе ничего не мешает запускать Groovy-скрипт как CGI под Apache или ещё как-либо web-сервером (nginx, lighttpd, и тд). Но производительность такого решения будет ничтожно мала, т.к. для каждого CGI-запроса будет создаваться экземпляр и без того тяжеловесной JVM.
    Потому с среде WEB Java и Groovy приложения принято запускать в среде web-контейнера (Tomcat, Resin, Jetty, и тд), который берет на себя работу по исполнению Java/Groovy-кода в пределах одной своей JVM. Такой подход позволяет не создавать несколько экземпляров виртульной машины, а исполнять все в пределах одной многопоточной системы. К тому же появляется возможность использовать “общие” обьекты для нескольких запросов (например подключение к БД).

  11. vlad

    >>Приятно узнать, что кто-то на просторах руНета использует Grails.
    >>Было бы интересно унать о реальном проекте на Grails.

    Реальные проекты на Grails, выполненные украинскими разработчиками есть уже в live, несколько проектов почти готовы к выходу в live. Потробности обещаю в скором времени на http://groups.google.com/group/grails-ua :)

  12. unreger

    Idea 7.0.3
    JetGroovy plugin 1.5.16456
    grails echo2 plugin

    не могу наследовать в свои груви классы
    известная в граилс ошибка:
    [groovyc] Compiling 1 source file to /home/хххх/.grails/1.0.3/projects/nb/classes
    Compilation error: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, /home/ххх/grails-app/echo2/test.groovy: -1: You are not allowed to overwrite the final method getProperty(java.lang.String) from class ‘nextapp.echo2.app.Component’.
    @ line -1, column -1.
    1 error
    как уверяют, исправлена в груви 1.5.0

    думал на идею и плагин, может старые либы груви положили, но
    при компиляции из командной строки grails run-app – то же самое

    а граилс внутри себя держит груви 1.5.6
    и еще у меня отдельно стоит груви 1.5.3
    так что в любом случае должна. бы.

    и что делать?

  13. vlad

  14. unreger

    спасибо
    вобщем все плохо
    граилс хранит внутри себя свою версию груви (вместо того чтобы пользоваться внешней) и поменять эту внутреннюю версию не знаю даже возможно или нет
    вобщем я буду ждать новой версии граилс
    придется пока echo2 классы писать на java

    никто с echo2 не работал?
    как создать событие на нажатие кнопки мыши
    среди готовых такого нет
    почитал про создание компонентов WritingYourOwnComponentPeersPart1 (ссылка потерялась) – вроде бы можно, но там просто страшно браться,
    может быть есть другой способ зарегистрировать свой обработчик?

  15. Groovier

    А можно по-подробнее Groovy-скриптах, работающих как CGI под Apache? Как настраивается, что для этого требуется. Встречал аналогичный вопрос встречал здесь: http://groovy-forum.org/viewtopic.php?t=308

  16. Артём

    А начал с Груви, но BeanShell оказался во многом лучше для меня.

  17. Inside

    А может кто нибудь рассказать как в Grails с плагином acegi получить текущего пользователя ( объект )

  18. Слава

    Привет :)

    Мучительно пытаюсь выбрать между Ruby и Groovy.
    Есть ли какие-нибудь фичеры, которые есть в Groovy, и которых нет в Ruby, или наоборот?

    Например, можно ли там передавать функции как аргументы в метод и возвращать их?

    Заранее признателен :)

  19. Vadim Voituk

    @Cлава,
    Тут и выбирать нечего – однозначно Groovy.

    >>Есть ли какие-нибудь фичеры, которые есть в Groovy, и которых нет в Ruby
    Есть: производительность, JVM-совместимость, отличные библиотеки.

    >>можно ли там передавать функции как аргументы в метод и возвращать их?
    В Groovy есть замыкания, с которыми можно делать все описанное выше и даже больше:)

  20. Слава

    Понятно, спасибо большое :)

  21. alex

    Почитал про Groovy – вам не кажется стремным переходить но новую технологию, которая еще не сильно изучена?

    Я смотрю на это как директор фирмы.

    Не знаю, как там по части заказов, возможно и на Groovy можно найти.

    Но применение новой технологии чревато большими затратами.

    Хотя, есть шанс подсесть “на волну” :-)

  22. Max

    ппц. директор. волна. первый коммент на это странице February 17th, 2008 at 8:23 pm

  23. meowth

    На ваш вгляд, Вадим, Groovy лучше, чем JRuby? Выбираю между тем и другим, никак не определюсь

  24. Vadim Voituk

    @meowth,
    Да нечего там выбирать – ничего в Groovy нет такого, что есть в JRuby.
    Да и Ruby, как язык в отрыве от RoR особо ничем не выделяется.

  25. Rimidalv

    Помогите разобраться: создаю класс наследованный от JPanel, и пытаюсь использовать его вместо SwingBuilder’овского ‘panel’, он же мне выдает ошибку

    Exception in thread “main” org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object ‘javax.swing.JPanel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=java.awt.Dimension[width=800,height=800],minimumSize=,preferredSize=java.awt.Dimension[width=800,height=800]]’ with class ‘javax.swing.JPanel’ to class ‘animeditor.TabPanel’

    Код вызова:

    TabPanel p = panel(layout:null,maximumSize:[800,800],preferredSize:[800,800] )
    {}

    Код определения класса:

    class TabPanel extends JPanel
    {
    public String title
    }

    Заранее спасибо

  26. Slava

    Swing Builder panel тэг создает обьект типа JPanel. Т.e. имеецца:

    TabPanel p = new JPanel();

    А так низя, это неправильное использование наследования. Мона тока наоборот. Я бы сделал так:

    def thePanel = panel(lmaximumSize:[800,800],preferredSize:[800,800] )
    {}

    def tabPanel = new TabPanel(thePanel)

    только нужно соответствующий конструктор определить.

  27. Vladimir Grichina

    Мы в своем блоге пишем тоже про Grails/Groovy/Java:
    http://www.componentix.com/blog

    Правда на английском, но есть один перевод на Хабре:
    http://habrahabr.ru/blogs/java/75774/ (Делаем мэш-ап Twitter’а и Google Maps за 20 минут на Grails)

  28. webdizz

    Привет, я тоже пытаюсь использовать Grails в своем новом проекте. Очень приятно, быстро и комфортно работать, правда не без нюансов.

  29. val che

    хай.
    из реальных проектов что мы запускали на груви: prazdnik-help.ru , trucks.ru. Был еще 1 голандский но не помню урл :-)

  30. Anatoly

    А где найти литературу по языку и груви фреймворку? Где найти хостинг, или как установить на VDS?

  31. Ivan

    (Для новичков, таких как сам)

    Ruby, RubyRails – типакруто, но “вещь в себе” по сравнению с JAVA и всем, что работает на JAVA (как Groovy-Grails)

    Год по-дилетански “изучал” Rails и Ruby вывод: как только стал делать не туторы а то-то свое – пришлось лезть в такие дебри, что послал Rails на… в конце концов!

    Теперь вижу такой путь в программирование:

    1. JAVA в основе! Для полных нулей-чайников, как я – читайте книшку “Философия JAVA” и что нить практичное. Программируйте роботиков в игре Colobot. Всяких Вомбатиков и Фигуристочек в учебных проектах типа GreenFoot и Alice.

    2. Изучите JAVA технологии, потому что JAVA это не только язык но и платформа с кучей решений на все случаи жизни!!!

    от 3D до WEB, от Мобильника до SQL, от криптографии до научных расчетов при чем в разных парадигмах и философиях (JSP, JSF, Applet, Servlet, EJB)… в общем у-у-ух! :)

    А самое улетное, что технологии можно “скрещивать”, типа 3D в идеологии Java Beans, как элемент в научной модели, запущенной сервлетом на сервере WWW и отображенное на экране мобильника!

    3. Grails – модная тенденция …ails`ов всевозможных, заложенная Rails для Ruby, Groovy, соответственно, эволюционный ответ Ruby от JAVA.

    Сам руби за последний год потерял несколько пунктов популярности в рэйтинге языков (JAVA к стати тама лидер последние 10 лет)

    Изучать Grails и Groovy, как ни странно нужно ПОСЛЕ Java и AJAX а не ДО и не ВМЕСТО!

    Сам создатель Rails “мимо ходом” говорит: “… посмотрите на громоздкие монстро-WEB-проекты на Java и C, один человек не в состоянии постичь их функциональность, поддерживать и развивать их для этого я и придумал Rails!”

    Я сам на это повелся а теперь понял две вещи:

    1. “сложнющие проекты” – НИКОГДА не станут “простецкими” по-определению! Их всегда будет невозможно постигать в одиночку в рамках единственной технологии/платформы!

    2. И Ruby и Groovy имеют “очевидно упрощенную” лексику для того, кому очевиден код Java или C.

    В общем резюме: Энтерпрайз-проекты в СНГ – банальны и сложны количественно а не идейно, для них идеально подходит Java – платформа во всем многообразии своих технологий.

    пардон за многословность :)

  32. Dmitry

    Спроектировал и реализовал фрэймворк на Groovy для преобразования сложных структур по декларативным правилам http://nomin.sf.net. Ядро, конечно, написано на Java для обеспечения производительности. Nomin + Groovy показали себя довольно успешно в enterprise среде (Deutsche bank).

  33. demon

    Используем grails уже не в первом проекте.

    Тяжело начинать, особенно если не знаешь спринг.

    Сейчас очень нравится. Чистую жаву уже видеть не могу.

    Как говорится аппетит приходит во время еды.

    Текущий проет на grails euronode.ru

  34. Anton

    проект на грейлс poiradar.ru

Leave a Reply