Исторически сложилось, что Groovy берет много хорошего у Ruby. В первую очередь, конечно Grails (от Rails), но и Spock (от Spec) и даже где-то Gradle (от Buildr, хотя никто не признается). Сегодня я вам расскажу про еще одну толковую «спертую» штуку —
web framework Ratpack.
Списан Ratpack с Sinatra, о котором много написано на Хабре, например
вот тут.
На мой взгляд, главное преимущество Синатры —
что он талантливый певец что это простейший в использовании и моментальный в разработке фреймворк. Создать несколько простых страниц, менять их и видеть результаты налету, и за несколько часов сваять достаточно нетривиальный сайт с динамическим контентом — это как раз то, для чего и был придуман Синатра. Это, своего рода, ответ «ожиревшим» Рельсам. Точно в такой же роли (ответа «ожиревшим» Грейлзам) Синатра и перекочевал в Груви.
Должен заметить, что на сей раз сообщество Груви были не первыми, кто передрал Синатру. Первыми были Scala, со своей
Скалатрой (ага, ответ на «ожиревший» Play). Насколько я знаю, решение не делать название похожим на слух, а искать ассоциацию по смыслу, было принято в первую очередь, придя в ужас от звучания названия версии Скалы :)
Ratpack переводится на русский как Крысиная стая, и привязка к Синатре в том, что это
тусовка, в которой тусовался Франк Синатра.
А причем тут Java?
Ну, тут, мне кажется, все ясно. В отличие от Руби, где когда-то был lightweight RoR, или от Груви с его Грейлз, в Джаве никогда не было мейнстримных «легковесных» фреймворков*. У нас есть либо громоздкие server-side component фреймворки типа JSF и Wicket, либо MVC фреймворки, которые, конечно, легче компонентных монстров, но все равно, требуют нагородить MVC для простейшей странички. Тут, конечно, я говорю о Spring MVC и Struts2. И всё это с жутко медленным циклом разработки «поменял слово? перезагрузи!». Бррр.
Как справедливо
заметил antonarhipov, можно воспользоваться фреймворками для REST APIs, такими как Jersey и RESTlet, но это, на мой взгляд, абьюз.
В Джаве уже есть клон Синатры, который называется
Spark, так почему бы не воспользоваться им? Я вижу для этого несколько причин:
- Freemarker или Velocity для темплейтинга. Первый, конечно, не так ужасен, как второй, но тоже не подарок. Оба хуже, чем Groovy Templates
- Hot Swap — клон Синатры должен уметь «поменял, F5, увидел». Если нет, то увы.
- Ratpack — прекрасная возможность плавно погрузиться в Груви. И я считаю, это главное преимущество.
Как всегда, преимущество Груви для программистов Джава — что они чувствуют себя как дома. 99% Java кода работает в Грувях без изменений, поэтому любой Груви фреймворк или инструмент может быть немедленно использован Java программистом.
Ситуация и с ratpack еще лучше — разработчики специально постарались, чтобы можно было писать на чистой Джаве, не задействуя Груви ни на одном этапе разработки. Таким образом вы можете начать не зная о Груви ничего, и потихоньку открывая для себя фичи Ratpack-а, начать писать на Груви. Один из примеров в этой статье будет написан 100% на Java. Кого на первом этапе не интересует всё это Грувийное шаманство, перекручивает прямо на последний пример. Остальные начинают здесь: