«Grails — The search is over»


Grails это очень прогрессивный Rails’style веб фреймворк для Java.
На его сайте висит лозунг — «Grails — The search is over». Почему так пафосно?
Это поймут наверное только Java программисты.
Вот в .NET например выбирать особо не приходится. Microsoft дают почти стандартный стек технологий:

  • На чём программировать? Вот вам всемогущий C#.
  • Нужен MVC? Вот вам ASP.NET
  • База данных? Вот вам MS SQL Server

И так далее. Почти на любой чих у M$ найдётся супер технология. Только готовьтесь раскошеливаться.

В Java всё намного веселее. Из сотен библиотек и компонентов каждый раз ты начинаешь лепить свой велосипед.
И выбор становится реальной головной болью:

  • Java, Scala, Groovy?
  • Java EE? Glassfish, JBoss, WebLogic, Tomcat, Jetty?
  • EJB, JPA, Hibernate, jOOQ?
  • GWT, Vaadin, JSF?
  • Spring, FreeMarker, SiteMesh?
  • jUnit, TestNG, Mockito, Unitils, DBUnit?
  • Maven, Ant, Gradle?
  • java.util.logging, commons-logging, SLF4j, SLF4J

ААААААААААААААААААААААААААААААААААААААААААААААААА!!!!!!!!!!!!!!111

Хотя это очень хорошо что есть выбор. Но такое обилие выбора имеет два побочных эффекта:
Паралич — ты начинаешь откладывать на потом решение вопроса
Ты всё равно останешься недоволен выбором: «Блин, может лучше было взять GWT?»
Один профессор посвятил целую жизнь изучению проблем выбора.

В целом, как я могу судить по количеству вакансий которые видел, для большинства веб проектов среднего масштаба в Java постепенно приходят к такому стеку: Java, Spring MVC, SiteMesh, jUnit, Mockito, Selenium, Maven, Hibernate, MySQL, Tomcat. В принципе вполне вменяемый стек, хоть и не совсем совместимый в JavaEE.
Следующая проблема это собрать весь этот конструктор. Тут тоже много сюрпризов: от несовместимости версий до дублирующегося функционала.
Вот например Алексей Резчиков создавал простое приложение для TODO списка:

У этого приложения POM файл получился почти на 800 строк. В принципе не так уж и много — это всё же многословный XML. Но это TODO приложение, блин!

Самое интересное что в конце концов у всех проектов получается примерно одинаковая структура и набор библиотек в основе.
Когда код разрастается и программисты начинают теряться в проекте, тогда приходят к единым соглашениям о том что и как писать и куда класть.
Например, «давайте контроллеры будем класть в папочку controller а бизнес сущности (Entity) или доменные объекты в папочку domain.
Во первых сразу знаешь что где искать, а во вторых теперь можно не наследовать каждый класс от какого-то абстрактного контроллера или вешать ему аннотацию — наш фрейморк итак уже будет знать что это контроллер и как себя с ним вести.
Явная спецификация конфигурации требуется только в нестандартных случаях.
Такой подход назвали Convention over configuration (Cоглашения по конфигурации).

Известным этот подход стал после успешного применения в веб фреймворке Ruby on Rails.
Успешным этот фреймворк стал также благодаря динамическим возможностям языка Руби которые казались какой-то магией.
Многие из этих возможностей Руби попали в язык программирования Groovy — это такой динамический диалект Java который учится за 15 минут.
Груви обратно совместим с Явой, просто добавляя в неё возможности динамического и функционального программирования. Эти возможности позволяют очень многократно сократить количество кода. Иной раз и вовсе как будто псевдокод читаешь.

Так вот, завистливые джависты скопировали идеи из Ruby on Rails, и создали Groovy on Rails. Но им пригрозили судом за использование Rails в качестве торговой марки, и тогда его переименовали в Grails. Так получилось даже лучше — Grail, в переводе с английского, это Священный Грааль.
Внутри него лежат уже сконфигурированные Spring MVC и Hibernate и много чего другого, и всё это под соусом Груви.

Не изобретайте велосипеды, попробуйте Grails.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s