Я согласен с Джейсоном в том, что Игра может оказаться лучше, чем у Грайла. С четырьмя проектами Grails под моим поясом (впереди два проекта Tapestry и один проект Wicket), я серьезно смотрю Play Play.
Одна из вещей, которые, как я думал, была крутой в отношении Grails, заключается в том, что «все в Groovy». То есть вы используете Groovy для написания всего (кроме HTML и CSS) - доменов, контроллеров, служб, шаблонов страниц (GSP), библиотек тегов, Hibernate API (GORM), модульных тестов (GUnit) и скриптов сборки (GANT). Вы даже можете писать сценарии оболочки в Groovy. Таким образом, возможность кодировать все аспекты приложения с использованием одного языка снова казалась упрощением, которое было давно названо - вернемся к дням написания настольных приложений на одном языке, таком как C++ или Delphi. Однако я узнал, что один размер не подходит всем.
Во-первых, поддержка IDE для Groovy невелика. IntelliJ делает лучшую работу, но с Groovy является динамичным, он может только зайти. Инструменты рефакторинга не могут (не могут) поймать все, поэтому вы не можете доверять им 100%. Это означает, что вы должны проявлять особую бдительность при модульном тестировании. Здесь снова, потому что Grails так много полагается на динамическое «волшебство», которое происходит во время выполнения, модульное тестирование в Grails должно опираться на обширный издевательский слой, чтобы подражать ему, и этот насмешливый слой является изворотливым. Третья проблема заключается в том, что большая часть так называемого кода Groovy, который вы пишете, на самом деле является кодом домена (DSL). (Короче говоря, DSL - это короткие Groovy, используя тот факт, что в Groovy и много синтаксиса является необязательным.) Grails использует разные DSL для различных конфигураций, сопоставления URL и т. Д., И это противоречиво. Например, как вы указываете настройки log4j, ничего не похоже на то, как вы указываете источники данных, и ни одна из них не похожа на чистую Java, на которой базируется Groovy. Таким образом, обещание «все в Гроуви» все равно разваливается.
В этом случае я вижу, откуда идет команда Play.
Возвращение к обычной Java для доменов, контроллеров, сервисов и JUnits имеет смысл.Сильная типизация означает, что IDE может надежно помочь с интеллектом, навигацией кода, рефакторингом и т. Д. (И, таким образом, вам не нужно платить за IntelliJ, если вы довольны Eclipse.) Необходимо написать более подробный код, чтобы получить сильную поддержку инструмента, похоже, для меня сейчас очень хорошо. Посмотрим.
Мне нравится, что я все еще использую Groovy в шаблонах страниц. Боюсь, что в конце концов я смогу добавить больше кода в шаблоны, чем должен.
У меня нет опыта работы с JPA, но похоже, что это довольно близко к тому, что GORM делает для меня, так что это круто.
Поддержка Spring IOC в Grails полностью прозрачна, в то время как поддержка Play кажется минимальной; однако, я думаю, что IOC используется слишком сильно, и я вполне согласен передать код Spring XML в редкий случай, который мне действительно нужен. (Один из моих открытых вопросов заключается в том, что я предполагаю, что JPA поддерживает транзакцию, поэтому Play не нужна весна для таких, как Grails, нет?)
Я никогда не был поклонником Python, поэтому я съежился, когда прочитал, что Play использует Python для своих скриптов сборки. Но я согласен с тем, что скрипты GANT от Grails работают довольно медленно. Плюс я нахожу, что, хотя GANT - это огромное улучшение по сравнению с XML ANT, все равно трудно обернуть голову концепциями ANT. Скрипты Grails GANT довольно запутаны. Итак, я пойду к нему с открытым умом.
Модель «прикладного модуля» Play звучит так же, как и «плагин» модели Grails, так что это круто.
Я очень впечатлен документацией Play, которую я прочитал до сих пор. У меня было огромное количество вопросов, но на половину из них ответили сразу.
Я доложу позже, когда я глубже погрузиться в
Похоже, что-то еще-приложение-рамки для меня. – skaffman