Каковы основные различия между Play Framework 1.0 и 2.0?


с недавним выпуском Play Framework 2.0 я хотел бы знать ,может ли кто-нибудь суммировать, с точки зрения высокого уровня, основные различия между Play Framework 1 и 2.

Я уже собрал несколько (play 1.0 - > play 2.0):

  • Template engine: Groovy Pages - > Scala Templates
  • Persistance: Hibernate - > Ebean
  • поддержка языка: Java - > Scala, Java
  • динамическая компиляция: инъекция ->байт-код динамическая компиляция через SBT
  • система сборки: n / a -> SBT
  • расширяемость: модули, Плагины -> подпроекты, Плагины, SBT плагин

Что еще ? Акка?

6 54

6 ответов:

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

  • нарушает обратную совместимость (это переписать с нуля)

  • ядро запрограммировано в scala vs java (нужно изучить scala для совместной работы)

  • scala для шаблонов (но работа выполняется на groovy templates в качестве модуля, чтобы облегчить миграцию), поэтому вам нужно указать тип каждого параметра

  • консоль sbt вместо python скрипты

  • sbt для решения зависимостей вместо встроенного решения (команда play dependencies)

  • доступность модулей, очевидно, потребуется некоторое время, чтобы перенести их все...

  • для java он предпочитает ebean вместо hibernate (но вы сможете использовать hibernate)

  • для scala, поставляется с anorm (но вы будете иметь возможность использовать другие библиотеки)

  • больше модульный, легче подобрать другие компоненты

  • больше типов безопасности-просмотры и даже маршруты проверяются во время компиляции

  • улучшенная производительность

  • поддержка typesafe, это часть typesafe stack

  • меньше магии, не так много генерации байт-кода и тому подобного

  • больше стандарта, (проекты игры как раз стандартный СБТ проекты)

  • другой API контроллера (более подробный, IMHO) вы можете сравнить a простая игра 1.X crud controller С аналогичная игра 2.0 one

  • scala является гражданином первого класса, но java одинаково поддерживается (имеет собственный API для каждого из них)

  • горячая перекомпиляция медленнее (она все еще на бета-версии, будем надеяться, что они ее решат)

  • поддержка Scala IDE не так зрелый, как java (но он развивается красиво)

  • асинхронная поддержка делегирована akka

  • лучше подготовлены для различных видов источников данных, таких как NoSQL dbs

для получения дополнительной информации взгляните на play 2.0 page (испанский перевод здесь) и документация RC1

в любом случае, я думаю, что главное отличие в том, что играть 1.x пытался построить его самостоятельно стек во время побега от j2ee, теперь они являются частью нового и альтернативного стека, основанного на scala, akka, sbt и при поддержке такой компании, как typesafe...

Я считаю следующий момент важным. Некоторые плюсы, некоторые минусы. Вы должны сами увидеть, какую версию вы предпочитаете.

  • ядро написано в Scala, поэтому, если вы не разработчик Scala, вы не можете легко исправить ошибку самостоятельно. Это была сила игры 1.2. Кроме того, если документация не очень хорошо вы потеряны. В игре 1.2 вы можете просто посмотреть на код. С eclipse у вас была IDE, чтобы легко искать ссылки. Я не уверен, если это существует сопоставимая IDE для Scala. Я слышал, что eclipse intellij отлично работает с ним, но не имеет собственного опыта.

  • компоненты более слабо связаны в 2.0. В play 2.0 вы можете легко выбрать предпочтительный механизм шаблонов или уровень сохраняемости. В 1.2 было сложнее выбрать что-то кроме JPA для настойчивости.

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

  • зависимости от других фреймворков выше. Например, теперь им нужны Scala и Akka. Оба хороши, но сложны. Таким образом, вы можете столкнуться с большими проблемами, если есть ошибки в одном из этих фреймворков. В игре 1.2 я вижу только такой риск для Hibernate.

  • "все" теперь типобезопасно и может быть проверено компилятором.

  • изменение Python на SBT означает, что вам нужно гораздо больше памяти на вашем машина развития. Я имею в виду, что компилятору Scala требуется не менее 512 МБ оперативной памяти. Это может быть проблемой на сервере непрерывной сборки.

конечно, есть много мелких деталей, как упоминалось Codemwnci.

ваш список-очень хорошее начало. Мой список выглядит похожим с несколькими дополнительными функциями.

  • Шаблоны перешли от Groovy к Scala.
  • Scala становится гражданином первого класса, а не дополнительным плагином
  • более сильный фокус на тип-безопасности, особенно в шаблонах
  • Python в SBT
  • Hibernate для Ebean
  • Akka для дополнения асинхронных функций в Play 1.x, а не Акка как модуль
  • Anorm доступно в ядре (а не в плагине scala)
  • повышение производительности в производстве за счет менее динамических элементов и более скомпилированных
  • интегрировано в TypeSafe stack

есть дубликаты между нашими списками, как и следовало ожидать. Также предупредил, что этот список по состоянию на ноябрь 2011 года, в то время как play 2 все еще находится в бета-версии.

здесь есть очень хорошие ответы, я просто хотел добавить несколько небольших моментов и предоставить детали, которые со временем стали яснее.

In-Browser-Reporting: воспроизведение 2 отчетов об ошибках в Javascript (с помощью компилятора закрытия google) и CSS-файлов в браузере, а не только файлов Java/Scala. Это действительно круто.

развертывание как война: играть 2 до сих пор официально не поддержка развертывания или экспорта в виде войны. А плагин существует, который должен обеспечить такую поддержку, но находится в бета-версии с некоторыми известными проблемами. Полная поддержка всех функций Play 2 на самом деле невозможна без сервлетов 3.1 containers, что займет не менее полугода, а возможно и больше.

Плагины: на данный момент есть еще много для игры 1, Если вы зависите от какого-то плагина, убедитесь, что он существует и для игры 2.

поддержка IDE: IntelliJ 12 должен поставляться со встроенной поддержкой play 2. Вы уже можете получить EAP ( у меня закончились разрешенные гиперссылки, поэтому вам придется google).

субъективное мнение: Я чувствую, что игра 2 пожертвовала некоторой простотой для поддержки более продвинутых функций и более полной безопасности типа. Я не говорю, что играть 2 трудно или не интуитивно, просто меньше, чем играть 1.

играть 1 представляет собой веб-платформу для веб-разработчиков веб-разработчики. Игра 2-это перспективный веб фреймворк для веб-разработчиков от web developers.

Так сказать, произошел небольшой сдвиг в фокусе, простота использования уже не является основной целью, а одной из двух основных целей. Это конечно только мое мнение и я знаю очень мало.

вы можете найти другой взгляд на эту тему в следующем блоге: http://blog.awfbeat.com/post/22314115684/impressions-of-play-framework-1-2-4-vs-2-0

подведение итогов от этой статьи:

  • конвейер активов для прямого использования компилятора закрытия Google, CoffeScript и менее
  • все скомпилировано, даже файл маршрутов
  • низкий объем памяти для запуска приложения
  • асинхронное / реактивное программирование с помощью Iteratee / Enumerator
  • как вы упомянули, Скала, Акка ...