web-dev-qa-db-fra.com

Frameworks Web: En quoi Play est-il différent de Spring MVC?

Play Framework offre l'aperçu rapide suivant, mais à l'exception du moteur de modèle Groovy (que vous pouvez obtenir dans Spring MVC si vous le souhaitez), Spring semble offrir toutes les mêmes fonctionnalités et plus encore. .

  • Corrigez le bug et appuyez sur recharger! Modifiez vos fichiers Java, enregistrez, actualisez votre navigateur et voyez les résultats immédiatement! Pas besoin de compiler, déployer ou redémarrer le serveur. Spring le fait, ce qui peut devenir ennuyeux.

  • Modèle sans état Le jeu est un véritable système "Ne rien partager". Prêt pour REST, il est facilement évolutif en exécutant plusieurs instances de la même application sur plusieurs serveurs. Les applications Spring typiques ont un niveau d'application sans état; ce n'est pas purement RESTful à moins que vous ne le vouliez, mais Spring est "prêt pour REST".

  • Système de modèle efficace Un système de modèle propre basé sur Groovy comme langage d'expression. Il fournit l'héritage, les inclusions et les balises de modèle. Spring utilise Java, mais Groovy est également une option.

  • Résolvez rapidement les erreurs Lorsqu'une erreur se produit, play vous montre le code source et la ligne exacte contenant le problème. Même dans les modèles. Spring le fait aussi.

  • Tout ce dont vous avez besoin pour créer une application web sympa Fournit une intégration avec Hibernate, OpenID, Memcached ... Et un système de plugins. Spring s'intègre à tout et plus.

  • Java pur Code avec Java, utilisez n'importe quelle bibliothèque Java et développez avec votre IDE préféré. S'intègre parfaitement avec Eclipse ou netbeans . Spring est pur Java aussi.

  • Vraiment rapide Démarre vite et tourne vite! Subjectif, mais le printemps est assez rapide.

Alors, qu'est-ce que Play Framework fait réellement différemment de Spring MVC?
En un mot, que peut faire Spring que le framework Play ne peut pas (et vice-versa)?

48
Play vs. Spring

Je trouve la revendication "Java pur" de chaque côté très drôle.

Bien sûr, il n'est pas réaliste qu'un projet n'utilise absolument que Java. Pourtant, une étiquette "Java pur" devrait avoir des normes, je ne pense pas que l'un ou l'autre des cadres soit admissible.

Play modifie en fait la sémantique de Java. C'est correct tant qu'il est clairement spécifié. Si vous faites une manipulation de code d'octet, soyez honnête à ce sujet. Habituellement, cela est fait par AOP-ish astuce, les méthodes d'instance sont décorées avec des comportements supplémentaires, leurs comportements manifestes - ceux-ci sont écrits dans le code, sont généralement conservés. .

Dans Play, une méthode statique appelant une autre méthode statique dans la même classe peut avoir des effets magiques et le comportement ne ressemble en rien à un appel de méthode. C'est un énorme problème si un programmeur Java ne peut plus être certain de ce qu'est un appel de méthode statique.

Spring - eh bien, leur partie Java est toujours pure Java bien. Mais c'est tellement magique (du POV de Java), et dépend tellement d'un framework lourd) , appeler Spring "pure Java", c'est comme appeler un burger "pure vege" si nous négligeons la viande. La viande est la meilleure partie!

10
irreputable