Groovy
28 June 2007, 09:17 | Vadim Voituk
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 – платформа во всем многообразии своих технологий.
пардон за многословность :)