Каковы основные различия между 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 - это перспективная веб-платформа для веб-разработчиков веб-разработчиков.
Так сказать, был небольшой сдвиг в фокусе, простота использования больше не является основной целью, а одной из двух основных целей. Это, конечно, только мое мнение, и я очень мало знаю.
Ответ 5
Вы можете найти другое сообщение по теме в следующем сообщении в блоге: http://blog.awfbeat.com/post/22314115684/impressions-of-play-framework-1-2-4-vs-2-0
Ответ 6
Подводя итоги из этой статьи:
- Консоль активов для прямого использования компилятора Google Closure, CoffeScript и LESS
- Все скомпилировано, даже файл маршрутов
- Низкий объем памяти для работающего приложения
- Асинхронное/реактивное программирование с помощью Iteratee/Enumerator
- Как вы упомянули, Scala, Akka,...