playframework - ¿Cuáles son las principales diferencias entre Play Framework 1.0 y 2.0?
playframework-2.0 (6)
Con el reciente lanzamiento de Play Framework 2.0, me gustaría saber si alguien podría resumir, desde un punto de vista de alto nivel, las principales diferencias entre Play Framework 1 y 2.
Ya compilé algunos (jugar 1.0 -> jugar 2.0):
- Motor de plantillas: páginas de Groovy -> Plantillas de Scala
- Persistencia: Hibernate -> Ebean
- Soporte de idioma: Java -> Scala, Java
- Compilación dinámica: inyección de código byte -> compilación dinámica vía SBT
- Sistema de compilación: n / a -> SBT
- Extensibilidad: módulos, complementos -> Subproyectos, complementos, plugin SBT
Qué más ? Akka?
Resumiendo de este artículo:
- Canal de activos para uso directo de Google Closure Compiler, CoffeScript y LESS
- Todo está compilado, incluso el archivo de rutas
- Huella de memoria baja para una aplicación en ejecución
- Programación asíncrona / reactiva con Iteratee / Enumerator
- Como mencionaste, Scala, Akka, ...
Encuentro el siguiente punto importante. Algunos son profesionales, algunos son contras. Debes ver por ti mismo qué versión prefieres.
El núcleo está escrito en Scala, por lo que si no eres un desarrollador de Scala no puedes arreglar fácilmente un error por ti mismo. Esta fue una fortaleza de juego 1.2. Además, si la documentación no es muy buena, estás perdido. En el juego 1.2 puedes simplemente mirar el código. Con eclipse, tenía un IDE para buscar fácilmente referencias. No estoy seguro si existe un IDE comparable para Scala. Escuché que eclipse un intellij funciona bien con él, pero no tiene experiencias propias.
Los componentes están más débilmente acoplados en 2.0. En Play 2.0 puedes elegir fácilmente tu motor de plantilla preferido o capa de persistencia. En 1.2 fue más difícil elegir algo que no sea JPA para persistencia.
Scala ahora es un ciudadano de primera clase, por lo que puede elegir libremente si desea escribir su aplicación en Scala o Java.
Las dependencias a otros marcos son más altas. Por ejemplo, ahora necesitan Scala y Akka. Ambos son agradables, pero complejos. Entonces puede encontrarse en un gran problema si hay errores en uno de estos marcos. En el juego 1.2 solo veo ese riesgo para Hibernate.
"Todo" ahora es seguro y puede ser verificado por el compilador.
Cambiar Python a SBT implica que necesita mucha más memoria en su máquina de desarrollo. Quiero decir que el compilador de Scala necesita al menos 512 MB de RAM. Eso puede ser un problema en un servidor de construcción continua.
Por supuesto, hay muchos pequeños detalles como los menciona Codemwnci.
Tu lista es un muy buen comienzo. Mi lista se ve similar con algunos extras.
- Las plantillas se han movido de Groovy a Scala.
- Scala se convierte en un ciudadano de primera clase, en lugar de un complemento opcional
- Mayor enfoque en la seguridad de tipo, especialmente en plantillas
- Python a SBT
- Hibernate a Ebean
- Akka para complementar las características asincrónicas en Play 1.x, en lugar de Akka como un módulo
- Anorm disponible en el núcleo (en lugar del plugin scala)
- Mejoras de rendimiento en la producción debido a elementos menos dinámicos y más compilados
- Integrado en la pila TypeSafe
Hay duplicaciones entre nuestras listas como es de esperar. También se ha advertido de que esta lista es a partir de noviembre de 2011, mientras que el juego 2 todavía está en Beta.
Puede encontrar otra opinión sobre el tema en la siguiente publicación del blog: http://blog.awfbeat.com/post/22314115684/impressions-of-play-framework-1-2-4-vs-2-0
Aquí está mi lista, por supuesto, con algunas duplicaciones
rompe la compatibilidad con versiones anteriores (es una reescritura desde cero)
núcleo programado en scala vs java (llegó a aprender scala para colaborar)
Scala para plantillas (pero se está trabajando en plantillas geniales como módulo para facilitar la migración), por lo que debe especificar el tipo de cada parámetro
consola sbt en lugar de scripts de python
sbt para resolver dependencias en lugar de solución incorporada (comando play dependencias)
la disponibilidad de módulos, obviamente tomará un tiempo para migrarlos a todos ...
para java, favorece a ebean en lugar de hibernar (pero podrás usar hibernación)
para scala, viene con anorm (pero podrás usar otras librerías)
más modular, más fácil de elegir otros componentes
más seguridad de tipos: las vistas e incluso las rutas se verifican en tiempo de compilación
mejor interpretación
menos magia, no tanto generación de código byte y cosas similares
más estándar, (los proyectos de juego son solo proyectos estándar de sbt)
API de controlador diferente (más detallado, en mi humilde opinión) se puede comparar un controlador crud simple juego 1.x con un juego similar 2.0 uno
scala es un ciudadano de primera clase, pero java es igualmente compatible (tiene API nativa para cada uno de ellos)
la recompilación en caliente es más lenta (todavía está en beta, esperemos que lo resuelvan)
El soporte Scala IDE no es tan maduro como el de Java (pero está evolucionando muy bien)
soporte asíncrono delegado a akka
mejor preparado para diferentes tipos de fuentes de datos, como nosql dbs
Para obtener más información, eche un vistazo a la página de play 2.0 (traducción al español disponible aquí ) y la documentación de RC1.
De todos modos, creo que la principal diferencia es que el juego 1.x intentó construir su propia pila mientras escapaba de j2ee, ahora son parte de una pila nueva y alternativa, basada en scala, akka, sbt y con el apoyo de una empresa como tipo seguro ...
Aquí hay algunas respuestas muy buenas, solo quería agregar algunos puntos pequeños y proporcionar detalles que se aclararon con el tiempo.
In-Browser-Reporting: Reproduzca 2 informes sobre errores en Javascript (utilizando el compilador de cierre de Google) y archivos CSS en el navegador y no solo en archivos Java / Scala. Esto es realmente genial.
Implementación como WAR: Play 2 aún no es oficialmente compatible con la implementación o exportación como WAR. Existe un complemento que se supone que proporciona dicha compatibilidad, pero está en versión beta con algunos problemas conocidos. El soporte total de todas las funciones de Play 2 no es posible sin los contenedores Servlets 3.1, que demorarán al menos medio año, probablemente más.
Complementos: por ahora, todavía hay muchos más para el juego 1, si depende de algún complemento, asegúrese de que exista para el juego 2 también.
Soporte IDE: IntelliJ 12 debería venir con soporte incorporado para jugar 2. Ya puedes obtener el EAP (me quedé sin hipervínculos permitidos, así que tendrás que buscar en google).
Opinión subjetiva: me siento como si Play 2 sacrificara algo de simplicidad para obtener soporte para características más avanzadas y una seguridad de tipo más completa. No digo que Play 2 sea difícil o no intuitivo, solo que Play 1.
Play 1 fue un marco web para desarrolladores web desarrollado por desarrolladores web. Play 2 es un framework web con visión de futuro para desarrolladores web desarrollado por desarrolladores web.
Por así decirlo, hubo un ligero cambio de enfoque, la facilidad de uso ya no es el objetivo principal, sino uno de los dos objetivos principales. Por supuesto, esta es solo mi opinión y sé muy poco.