Работа с Grails: Cоздание первого Grails-приложения

FoxPro

Знакомство с Grails я начну с другой бесплатной инфраструктуры для разработки Web-приложений: Ruby on Rails. Когда Rails появился, он увлек множество разработчиков. Возможности скаффолдинга, заложенные в Rails, позволяли запустить новый проект за меньшее время, чем раньше. Идея «соглашений по конфигурации» (convention over configuration), лежащая в основе Rails, позволяет приложению «собирать» себя самому, основываясь на разумных схемах именования, а не на громоздких и подверженных ошибкам конфигурационных XML-файлах. Возможности метапрограммирования Ruby позволяют объектам «магически» наследовать методы и поля, которые им требуются во время работы, без загромождения исходного кода.

Инфраструктур Rails заслужил и по-прежнему заслуживает того одобрения, которое он получил, но он ставит Java-разработчиков перед трудными вопросами. Стоит ли отказываться от известной Java-платформы из-за обещаний новой платформы? И что делать с существующим кодом Java, существующими корпоративными серверами и штатом опытных Java-программистов?

Об этой серии статей

Grails — это современный инфраструктур для разработки Web-приложений, который сочетает известные Java-технологии, такие как Spring и Hibernate, с современными приемами, такими как «соглашение по конфигурации». Написанный на Groovy, Grails прозрачно интегрируется с существующим Java-кодом, добавляя гибкость и динамику языков сценариев. После изучения Grails ваши взгляды на разработку Web-приложений изменятся бесповоротно.

Здесь на сцену выходит Grails. Grails предоставляет те же возможности разработки, что и Rails, при этом сохраняя прочную связь с проверенными Java-технологиями. Но Grails — это не просто «еще один клон» Rails, перенесенный на платформу Java. Grails усвоил уроки, полученные в Rails, и соединил их с современными веяниями в Java-программировании. Это скорее развитие Rails, чем просто перенос на новую платформу.

Открывая цикл «Работа с Grails», эта статья знакомит с инфраструктурой Grails, показывает, как установить ее, и шаг за шагом показывает процесс создания первого Grails-приложения: планировщика поездок, который будет использоваться в последующих статьях этой серии.

Возможности Groovy

Так же как Rails глубоко привязан к языку программирования Ruby, Grails не смог бы существовать без возможностей Groovy (см. раздел Ресурсы). Groovy — это динамический язык, работающий в JVM и прозрачно интегрирующийся с языком Java. Если вы читали многолетний цикл статей Practically Groovy на Web-сайте developerWorks, то вы уже знакомы с возможностями этого языка. Если же нет, то ничего страшного, в процессе изучения Grails придется узнать очень много и о Groovy. Это не должно быть сложно, так как Groovy был специально спроектирован так, чтобы понравиться Java-разработчикам.

Например, Groovy позволяет существенно сократить количество Java-кода, который обычно приходится писать. Не требуется писать get и set-методы для доступа к полям, так как Groovy предоставляет их автоматически. Не нужно писать конструкции типа for Iterator i = list.iterator() для выполнения цикла по списку элементов; конструкция list.each делает то же самое более лаконично и наглядно. Проще говоря, Groovy — это то, как выглядел бы язык Java, если бы его написали в двадцать первом веке.

Groovy никогда бы не привлек Java-программистов, если бы для того, чтобы воспользоваться его преимуществами, приходилось полностью переписывать приложения. К счастью, Groovy прозрачно интегрируется с существующим кодом. Язык Groovy не заменяет язык Java, а усовершенствует его. Groovy можно быстро изучить за один день, так как Groovy-код — это Java-код. Эти два языка настолько совместимы, что можно переименовать работающий файл .java в файл .groovy (например, файл Person.java переименовать в Person.groovy), и получить абсолютно правильный (и исполняемый) файл Groovy, хотя он и не будет использовать никаких синтаксических преимуществ, предоставляемых Groovy.

Такая глубокая совместимость между языками Groovy и Java означает, что Grails не нужно «изобретать колесо», когда речь идет о ключевых внутренних технологиях. Вместо этого он позволяет взглянуть на знакомые Java-библиотеки с точки зрения Groovy. Сценарии тестирования JUnit типа TestCase заключаются в Groovy-оболочку и представляются как объекты типа GroovyTestCase. Grails представляет новую точку зрения на сценарии сборки Ant посредством GANT — версии Ant, реализованной исключительно на Groovy. Grails помещает Hibernate за «тонкий» Groovy-фасад, называемый GORM (Grails Object Relational Mapping — расширение Grails для объектно-реляционного преобразования). Это только три примера того, как Grails позволяет использовать весь опыт, накопленный в Java, одновременно предоставляя преимущества современных приемов Web-разработки.

Но чтобы полностью оценить Grails, для начала с ним необходимо познакомиться на практике. Пришло время установить Grails и создать первое Web-приложение.