Groovy – объектно-ориентированный язык программирования разработанный для платформы Java как альтернатива языку Java с возможностями из Python, Руби, и Smalltalk.
Groovy использует Java подобный синтаксис с динамической компиляцией в JVM байт-код и напрямую работает с другим Java кодом и библиотеками.
Grails – фреймворк для создания web-приложений, написанный на Groovy с использованием Spring, Hibernate, Sitemesh. Grails исповедует идеи заложенные в фреймворке Ruby On Rails, и проецирует их в мир Java-технологий.
К сожалению русскоязычное сообщество пользователей Groovy & Grails пока достаточно бедно, потому если кт-то использует Groovy или Grails – просьба сообщить мне для формирования русскоязычного комьюнити.
Заметки, посвященные Groovy & Grails:
- What is groovy
- What non-Java language are you most interested in running on the JVM?
- Groovy: Extracting XML from your database (RU)
- Groovy documentation linkdump
- Groovy + JSON + Prototype in Action (РУС / ENG)
- Assertion based examples
- Groovy – it is like Visual Basic
- Groovy: if для невнимательных
- Groovy & GRails video
- More GRails video
- Не ant-ом единым… (РУС / ENG)
- Презентация Groovy на Exception#7
- …and more
Неплохие заметки можно найти в разделе “Practically Groovy” на сайте IBM(к сожалению качество их русского перевода хромает)
- Сокращение кода с помощью Groovy
- Программирование JDBC с помощью Groovy
- Ускорение мобульного тестирования Java-кода с помощью Groovy
- Функциональное программирование с помощью использованием замыканий и карринга
- Написание сценариев Ant с помощью Groovy
- Meta Object Protocol и мини-языки
- Подмешайте немного Groovy в приложения Java
- Fluently Groovy
- ссылки на остальные русскоязычные статьи буду добавлять по мере нахождения

Привет Вадим!
Я пытаюсь использовать грайлс в одном проекте, к сожалению пока с переменным успехом, много ошибок и сообщения о них не информативные. :(
Но концепция и сама разработка на нём мне нравиться.
Приятно узнать, что кто-то на просторах руНета использует Grails.
Было бы интересно унать о реальном проекте на Grails.
Уффф, 1 неделя в среднем по 4 часа в день, прочёл “Груви ин экшен” и разбирался с ним.
Офигенный недостаток, у него временами бывают совершенно неочевидные ошибки или он ведёт себя совершенно неочевидным способом. На разбор которых может уйти от 2х до 5 часов.
Слишком много времени на ошибки …
———————————–
И с самим груви тоже проблемы и ошибки, если попробовать написать на нём не хело ворлд одним скриптом а боль-менее реальный проект (с автозагрузкой изменённых файлов).
Например он не может динамически загружать два класса которые ссылаются друг на друга и находяться в разных файлах (через ГрувиСкриптЕнжин ) – ошибка.
Посмотрел исходники, но там реально чёрт ногу сломит или нужно сидеть неделю чтобы вьехать.
Короче я пока рисковать не буду. Можно использовать для встраивания кусочков в сущ. приложение. Создавать на нём пока рановато.
axyd: Спасибо за столь обширный комментарий.
Сразу с чем хочется согласиться – это неочевидность выводимых Groovy ошибок – приходится traceBack вычитывать чтоб понять что он от тебя хочет.
Но с опытом разработки и приходящим пониманием того, что стоит за фассадом языка – подобные неудобства уходят.
Насчет невозможности загрузить 2 класса через GroovyScriptEngine – не пробовал, но посоветовал бы пошаманить над GroovyClassLoader-ом (IMHO он больше к такой задаче приспособлен)
Кстати примеры есть в “Groovy In Action”.
а grails подходит для разработки на java? или только на groovy?
что есть подобное ruby on rails для java?
извините за глупые вопросы
Подходит и для разработки на Java.
Единственное что все-равно прийдется описывать Domain-классы на Groovy.
а gsp страницы? или можно и jsp использовать?
А чем принципиально GSP от JSP отличаются? Да почти ничем.
Но как ни крути от Groovy вы никуда в Grails не уйдете.
Да и нужно ли?
Мало ли фреймворков на Struts+SiteMesh+Hibernate…
Возможно, я в корне не понимаю эту технологию, следовательно такой вопрос. Можно ли использовать Groovy как обычный скриптовый язык вкупе с Apache с помощью CGI? (как, скажем Perl). Пробовал настроить классическим способом, плевалась непонятная ошибка. Спасибо.
В принципе ничего не мешает запускать Groovy-скрипт как CGI под Apache или ещё как-либо web-сервером (nginx, lighttpd, и тд). Но производительность такого решения будет ничтожно мала, т.к. для каждого CGI-запроса будет создаваться экземпляр и без того тяжеловесной JVM.
Потому с среде WEB Java и Groovy приложения принято запускать в среде web-контейнера (Tomcat, Resin, Jetty, и тд), который берет на себя работу по исполнению Java/Groovy-кода в пределах одной своей JVM. Такой подход позволяет не создавать несколько экземпляров виртульной машины, а исполнять все в пределах одной многопоточной системы. К тому же появляется возможность использовать “общие” обьекты для нескольких запросов (например подключение к БД).
>>Приятно узнать, что кто-то на просторах руНета использует Grails.
>>Было бы интересно унать о реальном проекте на Grails.
Реальные проекты на Grails, выполненные украинскими разработчиками есть уже в live, несколько проектов почти готовы к выходу в live. Потробности обещаю в скором времени на :)
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
так что в любом случае должна. бы.
и что делать?
спасибо
вобщем все плохо
граилс хранит внутри себя свою версию груви (вместо того чтобы пользоваться внешней) и поменять эту внутреннюю версию не знаю даже возможно или нет
вобщем я буду ждать новой версии граилс
придется пока echo2 классы писать на java
никто с echo2 не работал?
как создать событие на нажатие кнопки мыши
среди готовых такого нет
почитал про создание компонентов WritingYourOwnComponentPeersPart1 (ссылка потерялась) – вроде бы можно, но там просто страшно браться,
может быть есть другой способ зарегистрировать свой обработчик?
А можно по-подробнее Groovy-скриптах, работающих как CGI под Apache? Как настраивается, что для этого требуется. Встречал аналогичный вопрос встречал здесь:
А начал с Груви, но BeanShell оказался во многом лучше для меня.
А может кто нибудь рассказать как в Grails с плагином acegi получить текущего пользователя ( объект )
Привет :)
Мучительно пытаюсь выбрать между Ruby и Groovy.
Есть ли какие-нибудь фичеры, которые есть в Groovy, и которых нет в Ruby, или наоборот?
Например, можно ли там передавать функции как аргументы в метод и возвращать их?
Заранее признателен :)
@Cлава,
Тут и выбирать нечего – однозначно Groovy.
>>Есть ли какие-нибудь фичеры, которые есть в Groovy, и которых нет в Ruby
Есть: производительность, JVM-совместимость, отличные библиотеки.
>>можно ли там передавать функции как аргументы в метод и возвращать их?
В Groovy есть замыкания, с которыми можно делать все описанное выше и даже больше:)
Понятно, спасибо большое :)
Почитал про Groovy – вам не кажется стремным переходить но новую технологию, которая еще не сильно изучена?
Я смотрю на это как директор фирмы.
Не знаю, как там по части заказов, возможно и на Groovy можно найти.
Но применение новой технологии чревато большими затратами.
Хотя, есть шанс подсесть “на волну” :-)
ппц. директор. волна. первый коммент на это странице February 17th, 2008 at 8:23 pm
На ваш вгляд, Вадим, Groovy лучше, чем JRuby? Выбираю между тем и другим, никак не определюсь
@meowth,
Да нечего там выбирать – ничего в Groovy нет такого, что есть в JRuby.
Да и Ruby, как язык в отрыве от RoR особо ничем не выделяется.
Помогите разобраться: создаю класс наследованный от 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
}
Заранее спасибо
Swing Builder panel тэг создает обьект типа JPanel. Т.e. имеецца:
TabPanel p = new JPanel();
А так низя, это неправильное использование наследования. Мона тока наоборот. Я бы сделал так:
def thePanel = panel(lmaximumSize:[800,800],preferredSize:[800,800] )
{}
def tabPanel = new TabPanel(thePanel)
только нужно соответствующий конструктор определить.
Мы в своем блоге пишем тоже про Grails/Groovy/Java:
http://www.componentix.com/blog
Правда на английском, но есть один перевод на Хабре:
http://habrahabr.ru/blogs/java/75774/ (Делаем мэш-ап Twitter’а и Google Maps за 20 минут на Grails)
Привет, я тоже пытаюсь использовать Grails в своем новом проекте. Очень приятно, быстро и комфортно работать, правда не без нюансов.
хай.
из реальных проектов что мы запускали на груви: prazdnik-help.ru , trucks.ru. Был еще 1 голандский но не помню урл :-)
А где найти литературу по языку и груви фреймворку? Где найти хостинг, или как установить на VDS?
(Для новичков, таких как сам)
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 – платформа во всем многообразии своих технологий.
пардон за многословность :)
Спроектировал и реализовал фрэймворк на Groovy для преобразования сложных структур по декларативным правилам http://nomin.sf.net. Ядро, конечно, написано на Java для обеспечения производительности. Nomin + Groovy показали себя довольно успешно в enterprise среде (Deutsche bank).
Используем grails уже не в первом проекте.
Тяжело начинать, особенно если не знаешь спринг.
Сейчас очень нравится. Чистую жаву уже видеть не могу.
Как говорится аппетит приходит во время еды.
Текущий проет на grails euronode.ru
проект на грейлс poiradar.ru