Grails en vaut-il la peine? [fermé]


87

C'est à moitié diatribe, à moitié question.

Vaut-il la peine d'utiliser Grails? J'essaie de développer une application Web basée sur une base de données relativement simple. Mon expertise est en Java, donc naturellement Grails m'a semblé être un bon choix. Au début, j'ai pensé à utiliser Spring, JPA et Hibernate, mais je l'ai déjà utilisé et j'ai rencontré toutes sortes de travaux de configuration et de codage fastidieux. Grails se présente comme résolvant ce problème.

Ma plus grande frustration avec Grails est toutes les petites choses qui ne fonctionnent pas. Ce que je veux dire, c'est que cela ne fonctionne pas comme on le penserait intuitivement. C'est très rugueux sur les bords. Je rencontre constamment des problèmes. Parfois, c'est mon manque de compréhension des Grails - d'autres fois, j'ai découvert des bogues légitimes des Grails.

Un problème majeur est le manque d'une bonne intégration Eclipse. Il existe un plugin Groovy and Grails, mais il ne fait pas grand-chose d'autre que la coloration syntaxique. Appeler Groovy depuis Java et vice versa est très difficile à configurer . Ne pas avoir un bon support IDE est une déception majeure.

Ce qui se passe, c'est que je m'assois en essayant de développer mon application Web. À la fin de la journée, je me rends compte que j'ai passé environ 85% de la journée à déboguer les problèmes liés aux Grails. Si ce n'est pas des problèmes Eclipse alors il est chargement impatient , aller chercher dans la vue , l' un à de nombreuses relations , le comportement étrange bug de fichier vide , un bug étrange propriété / getter - il va juste et. Ceci n'est qu'un échantillon des problèmes que j'ai rencontrés aujourd'hui. Ma dernière rencontre avec Grails a donné lieu à tout un tas de problèmes différents.

Je me demande parfois si ça vaut le coup. Je suis curieux de savoir si d'autres en ont fait l'expérience. Y a-t-il des gens qui utilisent réellement Grails pour créer une application Web de manière productive? Existe-t-il d'autres cadres de développement Web rapide que je devrais envisager?


7
Vous avez posé cette question il y a des mois, mais je veux juste dire que je me suis éloigné de Java ces dernières années et que j'ai fini par être obligé d'utiliser Ruby on Rails tout récemment. Je ne peux pas expliquer à quel point il est simple et facile de tout faire. Personnellement, je déteste Ruby et c'est une flexibilité loufoque, mais comparé à faire une application Web dans N'IMPORTE QUEL framework en Java ... RoR a une énorme communauté et beaucoup de gens intelligents qui répondent à des choses. Le développement est redevenu amusant ... Bien sûr, il faut partir de zéro, mais ce n'est jamais comme la première fois.
Dan Rosenstark

4
Netbeans a maintenant une assez bonne intégration Grails / Groovy.
James McMahon

1
Groovy + Grails semble parfois combiner le pire des mondes Java et Ruby. Cela résout beaucoup de problèmes de configuration Spring et autres, mais ce n'est jamais aussi facile que Ruby + Rails. Cela peut se rapprocher, mais cela demande du travail. En même temps, il introduit une partie du manque de fiabilité / d'imprévisibilité de Ruby + Rails. Actuellement, je me demande comment diable il est possible que Grails ne prenne pas en charge les paramètres de demande de liaison aux objets domaine / commande. Je dois ajouter du code supplémentaire pour qu'il reconnaisse correctement les Enums.
mcv

Il y a un plugin pour Grails in eclipse récemment, n'est-ce pas? ( docs.codehaus.org/pages/viewpage.action?pageId=133464433 )
leeand00

Après avoir lu tous les commentaires, je partage les frustrations initiales liées à l'utilisation de Grails. Honnêtement, ce que nous vivions tous, c'est la courbe d'apprentissage abrupte si vous venez d'un développement Java simple. Ma suggestion est de prendre le temps de lire pour la première fois sur Grails. Suivez un didacticiel complet qui couvre tous les composants MVC. Expérimentez les erreurs wtf le plus tôt possible pour qu'elles ne vous mordent pas dans un vrai projet avec de vrais délais. Par exemple, j'ai pris deux semaines pour lire et pratiquer les chapitres 1 à 7 de Grails in Action (2e éd.). J'ai maintenant les connaissances de base pour continuer avec les requêtes Google.
Salvador Valencia

Réponses:


85

Nous avions une équipe de 12 personnes toutes expérimentées de développeurs Java expérimentés qui ont appris Grails à partir de 0.6B et nous travaillons toujours sur des projets basés sur Grails. Je ne retournerais pas volontiers à Java, et nous sommes tous soulagés de ne pas savoir comment arriver rapidement à quelque chose avec une application Grails.

C'était une lutte, ce n'était pas facile et il y avait / il y a de la frustration.

Néanmoins, nous avons livré quelque chose très rapidement compte tenu de nos efforts continus. Il y a des bogues, dont beaucoup ont des contournements.

J'ai entendu parler de plusieurs exemples de développeurs qui maîtrisent Java essayant de se plonger dans des incantations profondes et complexes de projets Grails. Nous avons évité tout Java et sommes devenus purs-Grails et Groovy. Nous nous sommes assurés de commencer simple, de construire la complexité de la manière la plus gérable et la plus pratique possible. Nous n'avons pas osé plonger dans le plus profond de nous et espérons que nos connaissances Java suffiraient à nous transporter.

Nous avions finalement créé quelque chose d'énorme et de complexe qui fonctionnait à merveille et qui fonctionnait bien plus rapidement que l'écriture d'une version pure Java / Spring / Hibernate; et c'est sans support IDE décent et une situation bien pire en termes de bugs qu'aujourd'hui.

En ce qui concerne le support Eclipse, le seul véritable IDE à utiliser pour Grails / Groovy est Intellij - le support Eclipse est malheureusement loin derrière: j'étais un amoureux d'Eclipse et je suis loin d'être un converti Intellij - le support Grails / Groovy souffle tout le reste. bien que.

Oui, Grails est peut-être immature par rapport au printemps. Ou Hibernate. Et je parierais qu'au cours des 1,5 premières années de leur existence, ils étaient tout aussi chargés de problèmes.

Cela étant tel qu'il est, il vous incombe de prendre soin de garder la complexité au minimum absolu, de tester soigneusement d'abord (à notre avis) et d'augmenter progressivement et avec soin la complexité.

Il n'y a pas de solution de code rapide avec Java une fois que vous impliquez Spring / Hibernate dans la pile. La complexité qu'incarne Grails est le reflet de la propre complexité de Spring / Hibernate. Si vous pensez qu'il vaut mieux passer du temps à le faire avec du Java pur, je ne dirais pas le contraire. J'ai toujours mes WTF mais maintenant que la courbe d'apprentissage abrupte est derrière moi, je pense que je vais m'en tenir aux Grails un peu plus.


2
Cool. Je pense que ta décision de n'utiliser que du groovy était sage.
krosenvold

9
+1 Je suis également un utilisateur d'Intellij, mais j'ai des collègues qui utilisent volontiers netbeans 6.5 et j'ai entendu dire que le support de l'éclipse s'améliore aussi. Nous utilisons des grails depuis .5 et nous sommes très satisfaits des grails. Il y a eu des bosses mais aussi une amélioration rapide et une grande communauté.
Ted Naleid

Mes pensées exactement et je peux ressentir la douleur alors que j'ai passé des siècles à essayer de comprendre les relations plusieurs-à-plusieurs et de mapper les classes de domaine sur une base de données héritée, mais avec le plugin de test Grails et Grails 1.1, ce sont des jours heureux
etHapp

@j pimmel comment se sentent les choses 18 mois plus tard?
Armand

7
Mieux que jamais! Je travaille sur mon 4e projet Grails d'entreprise; utilise un traitement de grille parallélisé pour de gros volumes de traitement XML, des mises à niveau beaucoup moins douloureuses (mais pas encore franchi le pas vers 1.3), les plugins s'améliorent, les IDE sont très bons maintenant. Lors d'une récente réunion, un programmeur .Net me disait à quel point Grails and Groovy est l'un des secrets Java les plus malchanceux qui n'a pas reçu l'attention qu'il mérite. Avec SpringSource à bord, cependant, le sentiment que nous bénéficions d'une plate-forme innovante, intuitive et évolutive est vraiment sur nous.
j pimmel

36

J'aime beaucoup écrire une application Grails pour deux raisons:

  • Je n'ai pas besoin d'utiliser Java
  • Je peux utiliser Java

Je pense qu'après s'être familiarisé avec le Graal, on fait ses choses très rapidement et avec élégance.

Voilà pour le côté positif. Le côté négatif est la performance, qui me frappe sur deux aspects: le déploiement et le développement piloté par les tests.

Je n'ai pas réussi à exécuter plus de 3 applications Grails sur un seul serveur (loué), car j'ai rapidement atteint les limites de mémoire et de performances. Il y a tout simplement trop de cadres inclus.

De plus, le testrunner des grails ne vaut pas ce nom. Lorsque j'exécute des tests unitaires, ils doivent être effectués en un instant, pas en 10 à 20 secondes. Je me retrouve donc tout le temps à écrire de la logique métier en java simple, car je peux la tester beaucoup plus rapidement. Mais je suppose que cela peut être résolu avec une meilleure intégration dans l'IDE (éclipse).


Lorsque vous dites test, vous voulez dire des tests d'intégration ou à la fois des tests unitaires et d'intégration, car j'utilise IntelliJ et les tests unitaires ne prennent pas si longtemps. Je serais d'accord en cas de tests d'intégration.
andHapp

la taille du jar diminue: thevirtualmachine.wordpress.com/2008/12/04/… , malade ceux-ci dans un espace commun ou jre / lib / ext / grails.org/Testing+Plugin est maintenant livré avec grails 1.1. ceux-ci peuvent simuler des objets de domaine, les tests unitaires s'exécutent donc rapidement .
Ray Tayek

Le plugin de test a l'air très cool, merci.
Ole

Bon point ici; tester avec java. Pourquoi n'y ai-je pas pensé plus tôt.
padippist

10

Je pense que le soutien de Spring à Grails va être un grand coup de pouce. Si quelqu'un peut le déplacer après CRUD sur le Web, ce sont ces gars-là.

Je pense aussi qu'il atteint une masse critique. Il y a plusieurs nouveaux livres qui arriveront sur le marché en 2009. Je pense que cela aidera le taux d'adoption.


9

Je suis entièrement d'accord avec les sentiments originaux des affiches.

Nous sommes une boutique Java + Spring et en avons profité pour essayer Grails. Nous avons d'abord créé une toute petite application de test qui s'est avérée assez simple à faire et qui a plutôt bien fonctionné. Les principaux problèmes que nous avons rencontrés ici étaient dus à notre manque de connaissances avec Groovy et Grails.

Suite à ce succès (regain de confiance), nous avons décidé de tenter un projet légèrement plus grand. Cela a été une expérience beaucoup plus douloureuse. Comme mentionné par d'autres, nous avons découvert toutes sortes de bugs et de problèmes qui n'étaient pas immédiatement apparents en surface. Les cycles de redémarrage de l'application deviennent extrêmement douloureux et à moins que vous n'ayez une très bonne couverture de test, c'est un cauchemar de faire toute sorte de refactorisation.

Il est vraiment frustrant de voir le code échouer sans un seul message d'erreur! Cela ne fonctionne tout simplement pas et vous ne savez pas pourquoi?

J'aime la facilité d'utilisation des plugins pour JMS, Quartz et Remoting pour n'en nommer que quelques-uns. Élimine beaucoup de XML fastidieux.

J'aime presque GORM pour sa simplicité bien que nous ayons également eu plusieurs problèmes.

Je n'aime pas la nature mal typée de Groovy et le fait que vous deviez exécuter votre application juste pour pouvoir attraper un tas d'erreurs me rappelle trop PHP ou Rails.

En fin de compte, nous nous demandons s'il est possible d'écrire un logiciel complexe et gérable en utilisant Grails ...

Nous avons une application Grails sur le point d'entrer en production ... alors nous verrons.


2
Comment s'est déroulée l'application Grails que vous aviez en production?
MauroPorras

Vous pouvez écrire du code gérable avec n'importe quoi, c'est juste le fait que les frameworks Web sont intrinsèquement complexes, donc je ne m'attendrais pas à ce qu'en peu de temps vous sachiez comment le faire. N'utilisez pas de serveur d'applications Web pour les tâches planifiées avec quartz, vous devez d'abord faire fonctionner l'application Web.
Andrew

7

Nous utilisons grails + sur la couche Web + java avec hibernate et spring sur la couche de service. Ce sont les trois couches classiques (web, logique, données) où le web est graal et la logique est implémentée en java. Comme d'habitude en java, nous utilisons des objets bean qui représentent les données entre différentes couches.

Cela fonctionne plutôt bien et c'était la meilleure solution pour notre cas car les objets bean étaient déjà là, ainsi que la structure de la base de données. D'après notre expérience, je pense que Grails a une grande valeur en tant que couche de présentation Web, mais je m'en tiendrai à java pour écrire les règles métier et conserver les données d'application - comme Grails "est" java, toute l'intégration grails-java est jolie simple.

Nous utilisons eclipse pour développer l'application Grails et son intégration est médiocre, comme les gens l'ont dit ici. Mais, comme suggéré par un autre développeur, nous exécutons l'application Grails à partir de la ligne de commande et n'utilisons qu'éclipse pour enregistrer les fichiers source, et cela fonctionne plutôt bien, car l'application est mise à jour à la volée.

Je ne me sens pas encore à l'aise pour utiliser les grails ailleurs que dans la couche de présentation.


Tout cela me semble parfaitement logique. C'est ainsi que j'ai l'intention d'utiliser Grails. c'est-à-dire pour le front-end.
Conor

7

J'ai beaucoup plus d'expérience avec Ruby on Rails qu'avec quoi que ce soit dans le monde Java, donc je viens d'un point de vue différent. Dans l'ensemble, Grails est beaucoup plus rugueux que Rails, en partie à cause de son immaturité, et en partie parce qu'il repose sur deux cadres incroyablement complexes sous les couvertures (Spring et Hibernate). Rails a également une communauté beaucoup plus grande.

Mais Groovy en tant que langue a fait d'énormes progrès et c'est un plaisir de travailler avec. Grâce aux améliorations apportées à Groovy 1.6, Grails est un peu plus vif que JRuby on Rails, et vous obtenez un support XML incroyablement bon via GPath. Il y a beaucoup de fonctionnalités intéressantes que vous obtenez en étant sur la JVM (comme la concurrence et des tonnes de code threadsafe), mais sans avoir à me soucier de Java (un langage que je n'aime pas beaucoup), donc j'ai vraiment un difficile de me convaincre d’utiliser quoi que ce soit en IRM.

Python a l'air tentant, je dois l'admettre.

Quant à vos problèmes Eclipse, je ne peux pas vous aider. J'utilise Vim et Emacs, principalement parce que je ne supporte pas les IDE. Pour les langages dynamiques comme Groovy, Ruby et Python, cependant, je ne pense pas que les IDE présentent vraiment un avantage réel, car il n'y a pas vraiment de place pour la génération de code ou le besoin de compiler. Peut-être essayer de travailler sans IDE pendant un certain temps et voir si les choses sont plus fluides?

Alors, oui, je pense que Grails en vaut la peine. Ils ont fait un travail incroyable pour faire fonctionner les choses aussi rapidement qu'ils l'ont fait, et les équipes Grails et Groovy sont toutes les deux vraiment, vraiment dévouées.


6

Je suis totalement avec toi! Grails est toujours si rugueux sur les bords que c'est presque une blague de le comparer avec Rails. Si au moins le rapport d'erreur était un peu meilleur. Mais je suppose que c'est probablement aussi dû à l'énorme quantité de bibliothèques qu'il utilise sous les couvertures. Un mot: stacktrace! Je ne suis pas non plus un grand fan de l'approche model-> db (Rails a db-> model). L'échafaudage laisse également beaucoup de place à des améliorations. Ensuite, "aucun redémarrage requis" ne fonctionne pas non plus comme annoncé. (Je ne suis pas sûr de ce qui est pire - devoir redémarrer tout le temps ou trouver parfois des comportements étranges qui disparaissent lorsque vous redémarrez) Et ne me lancez pas sur GORM. (Quand il faut des heures pour trouver un moyen de trouver un moyen qui aurait été un simple SQL, vous commencez à vous demander si tout cet ORM vous fait vraiment gagner du temps) Peut-être aussi longtemps que c'est simple.

Je veux dire: c'est toujours l'un des meilleurs choix de framework lorsque vous venez du monde java. (Tant de conneries inutiles là-bas qui s'appelle un framework Web) ... il a du potentiel. J'aurais juste aimé qu'il ne se soit pas construit sur tant d'autres choses complexes.

Quoi qu'il en soit - espérons que ces choses seront réglées. En ce moment, je me cache sur playframework.org qui a également l'air très élégant et prometteur.


Lorsque vous utilisez beaucoup les grails, vous serez accosté par le rapport d'erreur. Maintenant que Spring Sources a le contrôle, ils l'amélioreront et offriront un meilleur support.
padippist

4

Cela en vaudra la peine quand ils auront terminé le plugin eclipse. Le plus tôt sera le mieux je dis. Essayer de vendre du groovy à mon patron ne sera pas simple tant que cela ne se produira pas.


3
Plug-in Eclipse? Cieux, non. IntelliJ a déjà un excellent support Groovy et Grails. Je vous recommande d'obtenir un meilleur IDE - IntelliJ.
duffymo

+1, mais certaines personnes ne peuvent pas se permettre d'acheter de l'intellij et sont bloquées par l'éclipse.
Chii

4

Je trouve que le plus gros avantage de Grails est que je n'ai plus à me soucier de la base de données - le schéma est automatiquement créé / mis à jour, et la persistance est en grande partie faite pour moi (plus d'écriture de requêtes SQL). C'est un énorme soulagement. L'autre chose qui est plutôt intéressante est qu'une fois que vous avez choisi les modèles pour les contrôleurs et les vues, l'ajout de nouveaux objets de domaine est assez rapide. Bien que je soupçonne que vous apporterez au moins des changements continus à vos opinions, en les adaptant à celles existantes.

Quant à l'EDI, il semble qu'IntelliJ soit la meilleure option, mais je suis content d'utiliser Netbeans 6.5. J'utilise MyEclipse pour tous les autres développements, mais Netbeans a juste un meilleur support Grails maintenant.


3

J'étais un utilisateur d'Eclipse avant de commencer à utiliser Grails. Il est rapidement apparu que cela n'allait pas le couper. J'ai donc essayé Intellij et NetBeans. À l'époque, Intellij était meilleur en ce qui concerne Groovy et Grails. Cependant, NetBeans était gratuit et cela me suffisait. Depuis lors, tous les trois ont eu de nouvelles versions ou de nouveaux plugins publiés. J'utilise toujours NetBeans à cause du coût d'Intellij. Avec l'acquisition de G2One par Spring Source, l'une des attentes est un support accru pour Groovy et Grails dans Eclipse. Cela sera nécessaire pour une adoption accrue.

Utiliser Grails pour un nouveau projet est merveilleux. Une grande partie du bagage Enterprise Java n'est plus nécessaire. J'imagine qu'essayer de porter quelque chose serait difficile car tant que vous ne comprenez pas où se trouvent les forces et les faiblesses d'un cadre, il est difficile de l'utiliser efficacement. Il est promis que le support JSP sera plus facile dans Grails 1.1, je ne sais pas si utiliser une version bêta tout en essayant de créer un nouveau framework est une bonne idée. Les tests ont également fait l'objet d'une révision majeure pour la nouvelle version. Si le temps le permet, vous pouvez envisager d'attendre car la version 1.1 devrait arriver très bientôt.

Si vous avez l'occasion d'essayer Grails dans un autre IDE lors du démarrage d'un projet à partir de zéro, je pense que vous le verrez sous un jour différent.


3

Je viens de commencer à utiliser Grails sur un nouveau projet ... ne pas avoir à écrire AUCUN fichier xml tout en conservant la puissance de Spring et Hibernate est vraiment incroyable.

Cependant, utilisez IntellijIDEA pour l'IDE, j'ai en fait découvert Grails via l'EDI (je suis peut-être partial, je déteste l' éclipse).


2

Totalement. Il y a tellement de frameworks Java que la barre est placée assez haute pour les nouveaux arrivants, et c'est un témoignage de Grails qu'il a pu s'élever au-dessus dans un espace aussi encombré.

Il a encore quelques arêtes vives, mais ce ne sont qu'une question de temps avant d'être emmêlées, le projet sous-jacent en vaut vraiment la peine.


1

Grails peut être trop gros pour votre type d'application (en fonction des nombreux fichiers créés lors de la première initialisation et des ressources nécessaires). Si vous cherchez quelque chose de simple, Grails n'est peut-être pas ce que vous recherchez. Si vous cherchez quelque chose de simple et qui fonctionne, jusqu'à présent, je pense que Django peut bien faire votre travail. Regardez à quel point il est simple (combien de fichiers il faut) de créer une application CRUD à partir de son didacticiel . À partir de là, vos applications peuvent (relativement) facilement évoluer à mesure que vos besoins et exigences augmentent.


0

Je ne suis pas sûr qu'ils pourront jamais réussir à faire les Grails, vous savez. Et par droit, je veux dire aborder tous les détails (petits et grands) qui, au final, le rendent cassant et fragile. Je ne suis même pas sûr qu'il y ait une véritable équipe de développement (c'est-à-dire plus de 2 personnes) derrière.

Chaque fois que j'itère une fonctionnalité de mes projets Grails, en essayant d'améliorer quelque chose, c'est le même flux de travail: tout s'effondre, puis c'est une centaine de cycles de test `` google '', puis vous découvrez la raison pour laquelle vous ne pouvez pas faire ce que vous voulez et vous faites autre chose.

En fin de compte, vous êtes frustré parce que vous ne voulez même pas toucher à tout ce qui coule. Et les choses qui ne vont pas bien, vous les laissez tomber!

J'envisage de passer à Rails via JRuby. C'est peut-être le meilleur des deux mondes: un framework web performant avec une communauté active et nombreuse, une équipe dédiée de développeurs, une plateforme qui ne repose pas sur des frameworks douteux et complexes comme Spring ou Hibernate, un cycle de publication rapide et ambitieux. Et JRuby parce que franchement, tant d'actifs Java dans mon sac à dos, je ne peux pas les jeter.


Il y a définitivement une vraie équipe de développement derrière Grails, il y a au moins 4 personnes. Éjectez-vous votre code en testant d'abord? Bien que je ressens votre frustration, le grand nombre d'histoires à succès Grails suggère qu'une certaine persévérance est nécessaire. grails.org/Success+Stories
j pimmel

La persévérance est en effet de mise, comme pour tout ce qui concerne l'informatique. J'utilise des grails sur des projets d'entreprise depuis environ 2 ans maintenant. Chaque nouvelle version de Grails introduit des régressions, donc je ne sais pas qui devrait tester en premier et persévérer ;-) Merci pour vos commentaires et félicitations pour vos succès avec Grails!
Rollo Tomazzi le

Oui, je suis d'accord que la gestion des mises à niveau Grails est une chose assez coûteuse à propos de l'utilisation de Grails .. si vous décidez de justifier la mise à niveau - tous nos systèmes fonctionnent toujours sur 1.0.3
j pimmel

J'aime vraiment Grails, mais les mises à niveau peuvent être très pénibles.
user955732

0

Si votre expertise est en Java comme vous le dites. Vous devriez jeter un œil à Play Framework - c'est un framework Web inspiré de Ruby on Rails avec un cycle de développement très court - il suffit de sauvegarder votre fichier source Java et de mettre à jour votre navigateur Web. Et si vous souhaitez essayer un autre langage, Play Framework a un module qui vous permet d'utiliser Scala à la place.

J'aime Play Framework car il est facile à comprendre et offre de bonnes performances. Vous pouvez également utiliser JPA et Hibernate pour la couche ORM si vous le souhaitez.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.