Каковы основные различия между 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 ответов:
вот мой список, конечно, с некоторыми дубликатами
нарушает обратную совместимость (это переписать с нуля)
ядро запрограммировано в 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
- как вы упомянули, Скала, Акка ...