web-dev-qa-db-fra.com

Quelles sont les différences majeures entre le cadre de jeu 1.0 et 2.0?

Avec la publication récente de Play Framework 2.0, j'aimerais savoir si quelqu'un pouvait résumer, d'un point de vue de haut niveau, les principales différences entre le jeu de jeu 1 et 2.

J'ai déjà compilé quelques-uns (Play 1.0 -> Play 2.0):

  • Modèle de modèle: pages groovy -> Scala modèles
  • Persistance: Hibernate -> Ebean
  • Prise en charge de la langue: Java -> Scala, Java
  • Compilation dynamique: Injection de code d'octet -> Compilation dynamique via SBT
  • Système de construction: N/A -> SBT
  • Extensibilité: modules, plugins -> sous-projets, plugins, plug-in SBT

Quoi d'autre ? Akka?

53
Olivier Refalo

Voici ma liste, bien sûr, avec quelques duplications

  • rompt la compatibilité en arrière (il est une ré-écriture à partir de zéro)

  • noyau programmé dans scala vs Java (a apprendre scala à collaborer)

  • scala pour les modèles (mais le travail est fait sur des modèles groovy comme module, pour faciliter la migration), de sorte que vous devez spécifier le type de chaque paramètre

  • console SBT au lieu de python scripts

  • sBT pour résoudre les dépendances au lieu de construire en solution (dépendances de lecture commande)

  • la disponibilité des modules, il sera évidemment prendre un certain temps pour les migrer tous ...

  • pour Java, il favorise ebean en place de veille prolongée (mais vous serez en mesure de mise en veille prolongée utilisation)

  • pour scala, est livré avec anorm (mais you'l pouvoir utiliser d'autres bibliothèques)

  • plus modulaire, plus facile de choisir d'autres composants

  • plus de sécurité de type - vues et des itinéraires encore sont vérifiés au moment de la compilation

  • meilleure performance

  • typesafe support, cette partie de typesafe pile

  • moins magique, pas tant la génération de bytecode et d'autres choses similaires

  • plus standard, (projets de jeu ne sont que des projets standards de SBT)

  • différentes API du contrôleur (plus bavard, à mon humble avis), vous pouvez comparer simple jeu 1.x crud contrôleur avec jeu similaire 2.0 one

  • scala est un citoyen de première classe, mais Java est également pris en charge (a API native pour chacun d'eux)

  • recompilation chaud est plus lent (il est toujours en version bêta, espérons qu'ils le résoudre)

  • scala IDE support est pas aussi mature que de Java (mais elle évolue bien)

  • support asynchrone déléguée à Acre

  • mieux préparés pour différents types de sources de données, comme dbs NoSQL

Pour plus d'informations consulter jeu 2.0 pages (traduction espagnol disponible ici ) et documentation RC1

Quoi qu'il en soit, je pense que la principale différence est que 1.x jeu essayé de construire sa propre pile tout en échappant à l'écart de j2ee, ils font maintenant partie d'une pile nouvelle et alternative, basée sur scala, Akka, SBT et avec le soutien d'une entreprise comme typesafe ...

44
opensas

Je trouve le point suivant important. Certains sont-ils comme certains sont des contras. Vous devez vous voir par vous-même quelle version vous préférez.

  • Le noyau est écrit dans Scala, donc si vous n'êtes pas un Scala Developer, vous ne pouvez pas réparer facilement un bug par vous-même. C'était une force de jeu 1.2. En outre si la documentation n'est pas Très bon, vous êtes perdu. En jeu 1.2 Vous pouvez simplement regarder le code. Avec Eclipse, vous avez eu un IDE pour rechercher facilement une référence. Je ne suis pas sûr s'il existe un IDE pour Scala. J'ai entendu dire que l'éclipse d'Intellij travaille bien, mais ne possédait pas d'expériences.

  • Les composants sont plus lâchés en 2,0. Dans la lecture 2.0 Vous pouvez choisir facilement votre moteur de modèle préféré ou votre couche de persistance. Dans 1.2, il était plus difficile de choisir quelque chose, sauf JPA pour la persistance.

  • Scala est maintenant un citoyen de première classe, vous avez donc libre choix si vous souhaitez écrire votre application en Scala ou Java.

  • Les dépendances à d'autres cadres sont plus élevées. Par exemple, ils ont maintenant besoin Scala et akka. Les deux sont gentils, mais complexes. Vous pouvez donc courir dans de gros problèmes s'il y a des erreurs dans l'un de ces cadres. En jeu 1.2 Je ne vois que ce risque pour hibernate.

  • "Tout" est maintenant en sécurité et peut être vérifié par le compilateur.

  • Changer Python à SBT implique que vous avez besoin de beaucoup plus de mémoire sur votre machine de développement. Je veux dire que Scala compiler a besoin d'au moins 512 Mo de RAM. Cela peut être un problème sur un serveur de construction continue.

Bien sûr, il y a beaucoup de petits détails tels que mentionnés par Codemwnci.

18
niels

Votre liste est un très bon début. Ma liste ressemble à quelques extras.

  • Les modèles sont passés de Groovy à Scala.
  • Scala devient un citoyen de première classe plutôt qu'un plugin optionnel
  • Focalisation plus forte sur la sécurité de type, en particulier dans les modèles
  • Python à sbt
  • Hiberner à ebean
  • AKKA pour compléter les caractéristiques asynchrones dans la lecture 1.x, plutôt que Akka en tant que module
  • Disponible disponible dans le noyau (plutôt que scala Plugin)
  • Améliorations de performance de la production en raison d'éléments moins dynamiques et de plus compilé
  • Intégré à la pile Typeafe

Il y a des doubles emplois entre nos listes comme vous l'attendez. Également mis en place que cette liste est à partir de novembre 2011, tandis que la lecture 2 est toujours en version bêta.

13
Codemwnci

Il y a quelques très bonnes réponses ici, je voulais juste ajouter quelques petits points et fournir des détails qui sont devenus plus clairs avec le temps.

IN-Browser-Reporting: Lire 2 rapports sur des erreurs dans JavaScript (Utilisation de Google Fermeture Compiler) et des fichiers CSS dans le navigateur également et non seulement Java/fichiers Scala. C'est vraiment cool.

Déploiement en tant que guerre: Jouez 2 N'est-ce pas officiellement officiellement Support de déploiement ou d'exportation comme une guerre. A plug-in existe qui est censé fournir un tel soutien, mais est en version bêta avec quelques problèmes connus. La prise en charge complète de toutes les caractéristiques de lecture 2 n'est pas vraiment possible sans servlets 3.1 conteneurs, qui prendra au moins une demi-année, probablement plus.

Plug-ins: Pour l'instant, il reste encore beaucoup d'autres pour la lecture 1, si vous dépendez de certains plug in, assurez-vous qu'il existe pour jouer 2 également.

Support IDE: Intellij 12 devrait venir avec une prise en charge intégrée pour la lecture 2. Vous pouvez déjà obtenir le PAE (j'ai manqué de liens hyper autorisés pour que vous devront à google).

Opinion subjective: Je me sens comme si la lecture 2 a sacrifié une certaine simplicité pour la prise en charge des fonctionnalités plus avancées et une sécurité plus complète. Je ne dis pas que la lecture 2 est difficile ou non intuitive, juste moins que de jouer 1.

Play 1 est un framework web pour les développeurs web par les développeurs web. Play 2 est un cadre Web à la recherche directe pour les développeurs Web par les développeurs Web.

Donc, pour dire, il y avait un léger changement de concentration, la facilité d'utilisation n'est plus l'objectif principal, mais l'un des deux objectifs principaux. Ceci n'est bien sûr que mon opinion et je sais très peu.

10
Shrulik

Vous pouvez trouver une autre prise sur le sujet sur le blog suivant: http://blog.awfbeat.com/post/22314115684/impressions-of-play-framework-2-4-vs-2-

Résumant de - this article:

  • Pipeline d'actifs pour une utilisation directe du compilateur de fermeture de Google, de Coffescript et moins
  • Tout est compilé, même le fichier de routes
  • Empreinte à faible mémoire pour une application en cours d'exécution
  • ASYNC/Programmation réactive avec itéRee/Enumerator
  • Comme vous avez mentionné, Scala, Akka, ...
2
Marius Soutier