Калитка или игровая рамка? - PullRequest
24 голосов
/ 10 ноября 2010

Я совершенно новичок в веб-разработке на Java и хотел бы выбрать хорошую веб-среду Java для изучения. Я нашел несколько действительно хороших откликов относительно Apache Wicket Framework и Playframework . Я решил пойти на одного из них; но мне нужно выбрать; -)

Итак, что выбрать и почему?

EDIT

Мои требования:

  • У меня был хороший опыт разработки с Django, так что подобный фреймворк был бы великолепен,
  • Мне нужна среда, которая может взаимодействовать с другими популярными Java-вкусностями (библиотеками, инструментами и т. Д.), Чтобы я мог воспользоваться тем, что действительно предлагает Java.

Ответы [ 4 ]

51 голосов
/ 11 ноября 2010

Wicket и Play - это два совершенно разных типа фреймворков.

Play - это фреймворк MVC, с которым вы, вероятно, познакомитесь из Django.Как и Django, он предлагает больше, чем просто веб-биты, и предоставляет среду ORM на основе JPA, инструменты для создания строительных лесов и, возможно, многое другое (у меня нет практического опыта работы с ним).У них есть отличный учебник на их сайте, и вы, вероятно, увидите там сходство Django.

Wicket - это компонентно-ориентированная среда (например, JSF и Tapestry), которая в основном ориентирована на объектно-ориентированное проектирование.Это также MVC, как таковой, но страницы обычно создаются путем составления автономных и повторно используемых компонентов (View и Controller, подключаемые модели).Эти компоненты могут быть расширены стандартным наследованием и составлением, а разметка очень четко отделена от кода и легко модифицируется.

Wicket может управлять обратными вызовами событий и автоматически определять их состояние, так что у вас не будет , чтобы вообще думать о URL, независимо от сложности вашей страницы.Быстрый пример для нажимаемой кнопки, которая исчезает при нажатии (очень полезно):

  // In a page constructor
  add(new Link("link") {
        public void onClick() {
          setVisible(false);
        }
    });

Я хочу подчеркнуть, что вам не нужно использовать состояние на стороне сервера, и что это вполне возможноиспользовать Wicket как «нормальную» среду MVC, если хотите (и да, легко получить красивые URL).

Проект Wicket фокусируется только на базовой веб-инфраструктуре, и в нем нет дополнительных «тонкостей», таких как специальная поддержка ORM или строительные леса.Я лично согласен с философией проекта Wicket здесь, но для новых разработчиков, работающих на платформе, выполнение «простых» вещей, таких как сортируемая таблица с возможностью просмотра страниц, может быть немного сложным, так как готовых компонентов немного.Кривая обучения и продуктивности для Wicket может быть немного крутой, но положительным моментом является то, что после того, как вы сделали компоненты (и «поведение» - более длинная история), которые соответствуют вашим потребностям, их можно будет многократно использовать.

Хотя я лично люблю Wicket, у меня есть предчувствие, что вам, вероятно, будет лучше с Play.Ваш вопрос указывает на то, что вам нужен «Django» с доступом к библиотекам Java, и в этом случае я думаю, что Play (или какой-то другой Java MVC) является безопасным выбором.С другой стороны, возможно, вы использовали Django, потому что вы не знали, насколько невероятно мощен Wicket.;) Если вы дадите больше информации о вашем проекте, мы сможем дать более квалифицированный ответ.

В качестве побочного узла: поскольку Play не очень распространен (по крайней мере, на данный момент), яТакже рассмотрим Grails , который имеет мощную коммерческую поддержку и еще больше готовых модулей.

18 голосов
/ 10 ноября 2010

Играть! разработано так, чтобы быть удобным для разработчиков, использующих скриптовые языки, такие как Python и PHP. Он предоставляет свою собственную систему сборки и сценарии управления, что-то вроде Rails или Django. Существующие инструменты сборки и инфраструктура (например, репозитории Maven, обычно используемые для управления зависимостями в Java-land), плохо интегрируются с Play.

Wicket будет удобнее для разработчиков, начинающих с разработки десктопов на Java. Он не предоставляет специального инструментария, поэтому его легче интегрировать в конкретный инструмент сборки, если у вас есть предпочтения (и в экосистеме Java есть множество инструментов сборки, обеспечивающих такие вещи, как автоматический поиск зависимостей.)

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

7 голосов
/ 18 ноября 2010

Если ваша система предназначена только для веб-уровня, играйте! рамки очень подходят. But, если ваши модели данных предназначены не только для Интернета, может быть exported as REST by Spring with CXF, и используются GWT или другими веб-службами, и вы хотите убедиться, что согласованные состояния с веб-уровнем, Wicket (с Spring / hibernate) хороший выбор.

Что-то, что мне не нравится в Play! это механизм кеширования. Вы должны вручную назвать / вставить / получить / аннулировать / очистить кэш. Это сделает всю архитектуру подверженной ошибкам. Во время калитки с использованием Spring / JPA (hibernate) / ehcache (или других провайдеров) вы можете определить согласованный уровень кэширования / dao для верхнего уровня (web / REST ...), который не будет вызывать несоответствия состояний.

Еще одним преимуществом wicket является встроенная поддержка AJAX, поддерживаемая Java. Хотя эти состояния AJAX поддерживаются на стороне сервера (и, возможно, немного вяло), если вы не хотите изучать JavaScript, вы все равно можете создать «неплохую» страницу AJAX.

с игрой! Если вы не знаете о JS и не хотите изучать его, не хотите манипулировать громоздкими DOM, вы можете создать только «средний» сайт. OTOH, если вы разбираетесь в JS / jQuery, вы можете выбрать Play! .

3 голосов
/ 18 января 2012

Я использую PLAY!много и использовал Wicket для небольшой оценки.По моему опыту, вам нужно написать гораздо больше кода, чтобы выполнить ту же работу с Wicket.У вас больше "косвенности" с Wicket.Я лично предпочитаю код, в котором как можно меньше "церемоний" и за которым легко следовать.

Игра!архитекторы также добавляют поддержку Scala в Play !, что, на мой взгляд, является отличной идеей, поскольку Scala полностью совместима с Java-кодом и библиотеками, но гораздо более продвинута, чем Java.

...