web-dev-qa-db-fra.com

Grails vs Roo - pourquoi SpringSource propose deux technologies très similaires?

SpringSource (maintenant VMWare) possède deux technologies très similaires: Grails et Spring Roo. J'utilise Grails, mais je vois que SpringSource travaille activement sur quelque chose qui est un concurrent pour cette technologie et qui me fait craindre pour l'avenir de Grails.

Quelqu'un sait-il comment ces technologies sont liées, vont-elles être fusionnées ou l'une d'entre elles sera-t-elle abandonnée?

En outre, y a-t-il des différences techniques importantes entre Grails et Roo?

74
Piotr Kochański

SpringSource l'objectif est de rendre aussi rapide et facile que possible la création, l'exécution et la gestion de solutions basées sur Spring. Nous avons à la fois Grails et Spring Roo parce que nous nous soucions profondément de la productivité des développeurs et sans aucun doute ces deux outils fournissent un sérieux coup de pouce à ce que les équipes peuvent réaliser en plus de Spring.

Nous avons les deux technologies parce que Roo et Grails sont très différents au niveau philosophique et de mise en œuvre (comme déjà noté dans les autres réponses). Chaque technologie aborde son langage principal (Java ou Groovy) et son modèle d'exploitation (temps de développement ou d'exécution) avec la philosophie "comment pouvons-nous rendre la proposition de valeur incroyablement bonne en utilisant cette combinaison de langage et de modèle d'exploitation?". En tant que tel, vous verrez que chaque technologie adopte un style différent qui maximise cette combinaison (Java + Dev-time de Roo ou Groovy + Runtime de Grail) et les avantages correspondants.

Ces différences sont en fait très positives, car elles signifient que la communauté Spring peut choisir la "saveur" de la solution de productivité qu'elle préfère. Bien que ces différences initiales autour du choix de la langue et du fonctionnement en temps d'exécution/temps de développement soient immédiatement apparentes, le choix de Grails ou Roo s'étend également à des considérations plus subtiles telles que les technologies par défaut utilisées, le modèle d'interaction utilisateur, IDE = support, dépendances, normes, feuille de route, extensions, etc. Presque toutes ces différences sont une conséquence naturelle de la recherche d'une solution de pointe pour un style de langage particulier.

Notre meilleur conseil est de considérer les deux solutions. Chacun a ses points faibles, mais il y a des différences entre les deux qui rendront votre expérience globale meilleure avec une technologie ou l'autre dans un contexte donné. Les deux guides de référence détaillent les avantages respectifs de chaque solution . Bien sûr, n'oubliez pas que l'investissement en temps est minime pour essayer les deux. En 10 minutes, vous pouvez créer un projet dans Roo ou Grails, alors essayez-les et voyez ce qui vous semble le plus naturel compte tenu de vos antécédents et de vos besoins spécifiques.

88
Ben Alex

La principale différence est que Roo est un framework Java pur tandis que Grails exploite Groovy ainsi que Java. Les deux sont construits sur les bibliothèques principales de Spring et utilisent les bibliothèques open source Java populaires.

Cette question a été posée lors de l'annonce de Roo et Graeme Rocher (responsable Grails) dit que les deux cadres ont une place au sein de Spring et sont pris en charge de manière égale.

Si quoi que ce soit, je pense que Grails a un avenir meilleur que Roo. J'adore développer avec et je ne vois aucun inconvénient à ce que ce ne soit pas du Java pur.

22
leebutts

Grails et Roo sont très différents. La première différence majeure est la langue utilisée. Bien que vous puissiez écrire du code Groovy comme le Java code Java, vous avez toujours besoin des dépendances Groovy pour exécuter les applications Grails. Pour être aussi productif que possible dans Grails, vous devez également avoir une compréhension des fonctionnalités de Groovy qui ne font actuellement pas partie de Java comme les fermetures. Une autre différence est la philosophie que les frameworks adoptent pour générer du code. Grails génère beaucoup de méthodes à l'exécution tandis que Roo les génère sur demande pendant le processus de développement. Roo n'a aucune magie en arrière-plan acceptée pour l'utilisation de la programmation orientée aspect et vous pouvez afficher tout le code généré par Roo. Par exemple, dans Roo, vous devez utiliser une commande pour qu'il génère des méthodes dynamiques du Finder telles que findByBook (), puis afficher le code généré dans les fichiers .aj. Dans Grails, la méthode findByBook () est créée au moment de l'exécution, et vous ne pouvez pas afficher le code généré. Roo vous permet également d'arrêter d'utiliser le framework si vous avez choisi tout en continuant à avoir une exécution application en fusionnant tous les e Le code généré dans des fichiers .Java normaux. Vous n'avez alors aucune dépendance sur les bibliothèques Roo au moment de l'exécution ou de la conception. Si vous décidez que vous n'aimez pas Grails, il n'y a aucun moyen d'arrêter d'utiliser le framework tout en continuant à avoir une application qui fonctionne.

19
Jared

OMI les deux ne sont pas très similaires. Même s'il existe des similitudes, les différences suivantes sont importantes:

  • Roo utilise "Stock-Standard Java", Grails est basé sur Groovy
  • Grails est un framework Web, Roo n'est pas

Roo est très similaire au système de ligne de commande de Grails (par exemple le create-app, create-domain-class, test-app commandes de type trouvées dans Grails). Je ne serais pas surpris de voir une certaine "pollinisation croisée" entre cette partie du framework Grails et Roo.

9
Heinrich Filter

Ben Alex de SpringSource parle de Roo dans cette interview et il est interrogé sur Grails vs Roo. La principale différence en plus d'utiliser différents langages (Groovy vs Java comme d'autres l'ont mentionné) est que Roo est principalement un outil de temps de développement et Grails est plus impliqué dans l'exécution.

4
Csaba_H

Ils ne sont pas vraiment similaires. Roo fait sa magie au moment de la compilation, alors que Grails le fait à l'exécution. À cause de cela, les projets Roo ne prennent pas de résultats de performance lors de l'exécution.

Je ne vois pas comment ils pourraient être fusionnés car Grails est construit sur Groovy et Roo sur Java.

1
Kimble

J'ai vu quelques commentaires sur les listes de diffusion de Grails qui indiquaient que les auteurs pensaient que Roo n'existait que comme tremplin vers Grails! Cependant, j'envisage personnellement un possible passage de Grails à Roo. Je pense que la principale différence se situe entre les langages dynamiques et statiquement typés - pour moi, c'est énorme. J'adore de nombreuses fonctionnalités de Grails mais je préfère le support IDE et la vérification au moment de la compilation d'une langue typée statiquement. Certains autres ressentent exactement le contraire, donc des chevaux pour les cours. Cela dit, le groovy statique est actuellement en plein développement alors qui sait ce que l'avenir nous réserve.

1
Fletch

Nous avions une exigence où nous avions une application en production et qui a été développé dans Spring MVC et la vitesse de développement de nouvelles fonctionnalités était lente. Nous avons dû explorer des cadres alternatifs comme Grails et Roo. J'ai personnellement passé près d'un mois à explorer lequel était le meilleur.

Si vous souhaitez voir les détails de l'analyse, visitez @ http://krishnasblog.com/2012/05/08/roo-vs-grails/

Nous avons exploré les fonctionnalités suivantes dans ces deux et ci-dessous est nos résultats. Le verdict final, nous ne sommes pas sûrs que nous utiliserons l'un ou l'autre, nous explorons toujours

0
Krishna