It`s a year of Groovy/Grails

Рубрика: Development, Groovy, Java | 17 October 2007, 14:47 | Vadim Voituk

Не зря говорил мне один и разработчиков Groovy, что 2007-й – это будет год прорыва Groovy и Grails и судя по обилию новостей о них в последнее время так оно и есть.

Закрутившись в рутине рабочих будней чуть не пропустил несколько достаточно важных обновлений.

Первое.
Сразу после создания компании G2One, вышел Groovy 1.1 rc1
Основные изменения в этой версии коснулись производительности (groovy стал на 15 – 45% быстрее!), внутренней структуры языка и улучшения поддержки всех возможностей Java 5.
Также среди дополнений по сравнению с 1.1 beta 3 можно отметить:

  • Возможность в любом обьекте получить доступ к его метаклассу, без обращения к MetaClassRegistry
    [java]obj.metaClass
    // вместо старого
    GroovySystem.metaClassRegistry.getMetaClass(obj.class)[/java]
  • Отныне можно переопределять унарные операции “+”, “-” и “~”
    Для этого используются методы obj.positive(), obj.negative() и obj.bitwiseNegate()
  • Теперь строки можно приводить (coerce) к классам
    [java]“com.mysql.jdbc.Driver” as Class
    // а раньше приходилось
    Class.forName(“com.mysql.jdbc.Driver”)[/java]
  • И специально для любителей использовать ключевые слова языка как идентификаторы, добавили возможность использовать “static” как имени свойства без его экранирования (аля obj.’static’.method()

Release Candidate 2 планируется выпустить к началу ноября, а полноценный релиз -к середине следующего месяца.

Вторым важным, и лично для меня неожиданным, анонсом стал Grails 1.0 – RC1
Особо рассказывать про нововведения не буду, затрону только те, которые на мой взгляд являются наиболее важными:

  • Больше не нужно играться с hibernate-овскими xml-маппингами если имена в БД не соответствуют принятым conventions – теперь связь “поле таблицы<->свойство обьекта” можно указывать прямо в domain class-е
  • При конфигурации доступа к БД теперь можно указывать JNDI datasource

Так как я обещал себе вместе с выходом Grails 1.0 RELEASE написать небольшой экскурс в Grail – ждать мне осталось недолго :)
Ну и как я и предрекал с появлением G2One, большие компании перестали скрывать факт использования Groovy и Grails: вслед за вакансиями в LinkedIn, SAP анонсировала свой Composition On Rails – продукт на основе Grails.

Keep Grooving!

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

6 Responses to “It`s a year of Groovy/Grails”

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

  1. Потапенко Евгений

    кстати действительно стал работать быстрее, потестировал…

    в Grails хорошая новая фича – фильтры. перепишу у себя механизм идентификации :) Acegi больше мне не нужен. Ну и эвенты в доменах тоже ничего….

  2. vadim

    Евгений, видать я что-то упустил – можно в двух словах что за звери такие?
    И как производительность мерял?

    У меня на небольших простых скриптах субьективно уменьшилось время запуска.

  3. Евгений Потапенко

    фильтры http://grails.codehaus.org/Filters

    то есть пишем в conf директории класс заканчивающийся на Filter и получаем перехват запросов где можем сделать тот же мехинизм идентификации. C Acegi нужно было лезть в спринг и делать практически тоже самое (что почемуто противно, к хорошему привыкаешь :) ). Раньше я делал через beforeInterceptor, что не удобно тем, что нужно наследоваться контроллеру от класса что не приятно, наследоваться хотчется например от другого, а во-вторых, каждому контроллер нужно было проверять, не забыл ли, а тут все сразу в одном месте. Конечно все это можно было реализвать просто сервлет-фильтрами но ведь коль в Граилс, то зачем лезть в такие дебри.

    а эвенты ( http://grails.codehaus.org/GORM+-+Events)- ну это sql-триггер-подобный функционал. Раньше тоже можно было наверное перехватить .save(), delete() итд, а тут вот оно, встроенное :)

  4. Евгений Потапенко

    а по скорости, да сервер у меня стартует в два раза быстре после апдейта.

  5. vadim

    Действительно удобные дополнения. Спасибо за ссылки.

  6. Kefir

    У меня вот такой вопрос возник: Как можно фильтр прикрепить для нескольких контроллеров, но не всех? Или я че-то туплю, или тако возможности нет.

    Т.е. к одному делается просто, ко всем, ставим * тоже все в порядке. А вот чтобы фильтр срабатывал при обращении к 2м, например, разным контроллерам.

Leave a Reply