есть опыт работы с “Play” java-фреймворком веб-разработки?[закрыто]

StackOverflow https://stackoverflow.com/questions/1597086

  •  22-09-2019
  •  | 
  •  

Вопрос

Я только что наткнулся на следующий новый java web framework:Воспроизвести

http://www.playframework.org/

http://www.playframework.org/documentation/1.0/home

с таким потрясающим списком функций я очень удивлен, что не слышал об этом раньше...

Звучит как земля обетованная для веб-разработки на Java...

кто-нибудь пробовал это?есть какой-нибудь реальный опыт работы с этим?как вы думаете, стоит ли это изучать?

Это было полезно?

Решение

Я согласен с Джейсоном, что Игра может оказаться просто лучше, чем Grails.Имея за плечами четыре проекта Grails (которым предшествовали два проекта Tapestry и один проект Wicket), я серьезно рассматриваю Play next.

Одна из вещей, которая, по моему мнению, была классной в Grails, - это то, что "все классно". То есть вы используете Groovy для написания всего (кроме HTML и CSS) - доменов, контроллеров, служб, шаблонов страниц (GSP), библиотек тегов, Hibernate API (GORM), модульных тестов (gUnit) и сценариев сборки (GANT).Вы даже можете писать сценарии оболочки на Groovy.Таким образом, возможность снова кодировать все аспекты приложения на одном языке казалась упрощением, которое давно назрело - вспоминая времена написания настольных приложений на одном языке, таком как C ++ или Delphi.Однако я узнал, что один размер здесь подходит не всем.

Во-первых, поддержка IDE для Groovy невелика.IntelliJ делает лучшую работу, но поскольку Groovy динамичен, это может зайти не так далеко.Инструменты рефакторинга не улавливают (не могут) всего, поэтому вы не можете доверять им на 100%.Это означает, что вы должны быть особенно бдительны при модульном тестировании.И здесь опять же, поскольку Grails в значительной степени полагается на динамическую "магию", которая происходит во время выполнения, модульное тестирование в Grails должно полагаться на обширный слой mocking для его эмуляции, и этот слой mocking является необычным.Третья проблема заключается в том, что большая часть так называемого Groovy-кода, который вы пишете, на самом деле является кодом на языке domain-specific language (DSL).(Короче говоря, DSL - это short-hand Groovy, использующий тот факт, что в Groovy и lot синтаксис необязателен.) Grails использует разные DSL для различных конфигураций, сопоставления URL и т.д.и это непоследовательно.Например, то, как вы указываете настройки log4j, совсем не похоже на то, как вы указываете источники данных, и ни то, ни другое не похоже на чистую Java, на которой основан Groovy.Таким образом, обещание "все будет классно" в любом случае рушится.

В таком случае, я вижу, откуда берется Игровая команда.

  1. Возврат к обычной Java для доменов, контроллеров, служб и JUNITS имеет смысл.Строгая типизация означает, что IDE может надежно помочь с интеллектом, навигацией по коду, рефакторингом и т.д.(И, следовательно, вам не нужно платить за IntelliJ, если вас устраивает Eclipse.) Необходимость писать более подробный код, чтобы вернуть надежную поддержку инструмента, кажется мне хорошей сделкой прямо сейчас.Посмотрим.

  2. Мне нравится, что я по-прежнему могу использовать Groovy в шаблонах страниц.Однако, боюсь, в конечном итоге я могу поместить в шаблоны больше кода, чем следовало бы.

  3. У меня нет опыта работы с JPA, но, похоже, это довольно близко к тому, что GORM делает для меня, так что это круто.

  4. Поддержка Spring IOC в Grails полностью прозрачна, в то время как поддержка Play кажется минимальной;тем не менее, я думаю, что IOC используется чрезмерно, и я вполне готов передать коду отображение Spring XML в тех редких случаях, когда оно мне действительно нужно.(Один из моих открытых вопросов заключается в том, что я предполагаю, что у JPA есть поддержка транзакций, поэтому Play не нуждается в Spring для этого, как Grails, не так ли?)

  5. Я никогда не был поклонником Python, поэтому съежился, когда прочитал, что Play использует Python для своих сценариев сборки.Но я согласен, что GANT-скрипты Grails работают довольно медленно.Плюс я нахожу, что, хотя GANT является огромным улучшением по сравнению с XML ANT, все еще трудно разобраться в концепциях ANT.Сценарии Grails GANT довольно запутанны.Так что я подойду к этому с открытой душой.

  6. Модель Play "application module" звучит точно так же, как модель Grails "plugin", так что это круто.

  7. Я весьма впечатлен документацией Play, которую я прочитал до сих пор.У меня возникло огромное количество вопросов, но на половину из них я получил ответы сразу.

Я еще раз отчитаюсь позже, когда погружусь поглубже.

Другие советы

Я попробовал Поиграть, и я впечатлен:он отлично справляется с поставкой полезной модели разработки, которая намного проще, чем большинство фреймворков ".Больше всего на свете ценна способность среды выполнения в "режиме разработки" напрямую анализировать файлы .java:простая перезагрузка веб-страницы в браузере без запуска сценария сборки или ожидания повторного развертывания значительно ускоряет разработку.Сообщения об ошибках, отображаемые в браузере, тоже действительно хороши.

Еще одной вещью, которая произвела на меня впечатление, была общая эстетика:возможно, мало того, что учебное приложение на самом деле выглядит хорошо (как код, так и дизайн веб-страницы), но это распространяется на весь фреймворк, API, а также документацию.

После подсказки коллеги я просмотрел его, последовал руководству и попался на крючок.Получение немедленной обратной связи прямо в вашем браузере означает, что вам не нужно использовать IDE.Я люблю Eclipse, но давайте посмотрим правде в глаза:после того, как вы добавили некоторые дополнительные функции, он становится не таким стабильным, как простой текстовый редактор.На компьютере Mac с TextMate вы даже можете нажать на сообщение об ошибке в вашем браузере, и TextMate появится с наведением курсора на эту строку.

Тестирование в Play также отлично выполнено, одним нажатием кнопки вы запускаете модульные тесты, функциональные тесты и тесты на основе Selenium.

Игра увлекательна, потому что она все еще маленькая и несложная.Он использует только ant для сборки и делает это за 25 секунд.Вклад в создание красивой документации заключается в редактировании файлов .textile и перезагрузке документов в любом приложении Play.

Вот как я оказался в поисках перевода руководства для использования Scala, добавив поддержку Scala там, где это было необходимо, чтобы сделать его как можно более приятным.

Мне это нравится, я использую его для небольших проектов, и пока он выглядит идеально подходящим для этой работы.Однако есть одна вещь, по которой я очень скучаю, которая была специально упущена:Разделение слоев сервиса / DAO / Модели!В документации ясно сказано, что одна из целей Play - избежать "Анемичной модели данных".:http://www.playframework.org/documentation/1.0.1/model

но, по моему опыту, классическое разделение слоев Service / DAO / Model экономит массу времени разработки, когда приложение нуждается в рефакторинге!В Play вы застряли со статическими методами, которые зависят от специфичного для Play управления транзакциями и особенностей...

Тем не менее, многие высказываются за:скорость разработки, чистота кода и, в конце концов...весело!

Я использовал Grails, Tapestry 4/5 и прямой Java / JSP / Spring / Hibernate.

Я думаю, что впервые за долгое время все идет в правильном направлении.Grails был действительно хорошим первым шагом, но играйте!похоже на что-то, у чего действительно могли бы быть ноги.Поддержка Scala появится в версии 1.1.Если есть шанс, что я смогу написать свои контроллеры / домен в Clojure, я продан ;)

Начиная с одного года и без видимых ошибок после 18 небольших выпусков, мы используем Play!1.2.4 в интранет-заявке на постановку "отсутствия" для школы (актеры:>100 преподавателей, > 700 студентов, административная команда).Клиентская часть была написана с использованием FLEX 4.6 от Adobe (очень красивые виды).Данные отправляются и принимаются в формате AMF3 (модуль Cinnamon).Мы используем собственный простой уровень dao, основанный на JPA EclipseLink и MySQL для базы данных.Приложение хранится на виртуальном сервере Linux.Я большой поклонник разработчика Play за его простоту и очень продуктивный подход.

Мне нравится, как выглядит игра, но я ее еще не пробовал.При просмотре документов выделялась одна вещь - интенсивное использование статических методов.С точки зрения модульного тестирования это всегда значительно усложняет задачу (я думаю, издевается) и является отходом от подхода OO-everywhere в типичной разработке Java.Может быть, в этом и есть смысл, но это просто то, что вызвало у меня немного меньше энтузиазма...

В настоящее время я создаю веб-приложения на работе, используя play framework, который выполняет масштабную обработку данных.Я должен сказать, что скорость, которую предлагает play сама по себе, значительна и превосходит то, что может обеспечить RoR.Кроме того, play - это фреймворк на базе Java, и, следовательно, многопоточность может быть выполнена легко.Следующее - это абсолютная производительность, которую вы получаете, когда используете модули на основе Java, такие как Japid и Netty, наряду с play.Похоже, что для повышения производительности можно выполнять бесконечное количество настроек.На мой взгляд, нужно попробовать.

Я использую Play в небольшом проекте, и, похоже, это именно то, о чем они говорили.Но одна функция, я думаю, должна присутствовать по умолчанию в фреймворке:возможность работы с несколькими источниками данных (например,использовать более одной схемы базы данных).Это единственная недостающая функция, которую я нашел до сих пор.

С уважением, Уильян.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top