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

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

Я уже скомпилировал несколько (play 1.0 → play 2.0):

  • Шаблонный движок: Groovy Страницы → Scala Шаблоны
  • Устойчивость: спящий режим → Ebean
  • Поддержка языка: Java → Scala, Java
  • Динамическая компиляция: вставка байтового кода → динамическая компиляция через SBT
  • Система сборки: n/a → SBT
  • Расширяемость: модули, плагины → Подпроекты, плагины, плагин SBT

Что еще? Akka?

Ответ 1

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

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

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

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

  • sbt console вместо сценариев python

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

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

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

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

  • более модульные, проще выбрать другие компоненты

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

  • более высокая производительность

  • поддержка типов, это часть типов типов

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

  • более стандартный, (игровые проекты - это только стандартные проекты sbt)

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

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

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

  • scala Поддержка IDE не настолько зрелая, как java (но она развивается красиво)

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

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

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

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

Ответ 2

Я считаю важным следующее. Некоторые из них - профессионалы. Вы должны сами убедиться, какую версию вы предпочитаете.

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

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

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

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

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

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

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

Ответ 3

Ваш список - очень хорошее начало. Мой список похож на несколько дополнений.

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

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

Ответ 4

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

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

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

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

Поддержка IDE: IntelliJ 12 должен иметь встроенную поддержку для воспроизведения 2. Вы уже можете получить EAP (у меня закончились допустимые гиперссылки, поэтому вам придется идти в Google). p >

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

Play 1 была веб-картой для веб-разработчиков веб-разработчиков. Play 2 - это перспективная веб-платформа для веб-разработчиков веб-разработчиков.

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

Ответ 6

Подводя итоги из этой статьи:

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