Каковы основные различия между Play Framework 1.0 и 2.0? - PullRequest
54 голосов
/ 19 ноября 2011

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

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

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

Что еще? Akka?

Ответы [ 6 ]

44 голосов
/ 27 декабря 2011

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

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

  • ядро, запрограммированное в Scala vs Java (нужно научиться работать в Scala)

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

  • консоль sbt вместо сценариев python

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

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

  • для Java, он предпочитает Eese вместо Hibernate (но вы сможете использовать Hibernate)

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

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

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

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

  • типобезопасная поддержка, она входит в типобезопасный стек

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

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

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

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

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

  • Поддержка Scala IDE не настолько развита, как поддержка Java (но развивается хорошо)

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

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

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

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

18 голосов
/ 19 ноября 2011

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

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

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

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

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

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

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

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

13 голосов
/ 19 ноября 2011

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

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

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

10 голосов
/ 10 августа 2012

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

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).

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

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

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

6 голосов

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

2 голосов
/ 19 ноября 2011

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

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