Question

Pourquoi choisirais-je d'utiliser Groovy alors que je pourrais utiliser Jython ou Jruby? Le langage offre-t-il des avantages inhérents pour compenser le fait que les compétences Jython et Jruby s’appliquent à leurs langues parentes en dehors de la machine virtuelle Java?

N'oubliez pas que je garde volontairement cette question générique, mais s'il existe des avantages dans un domaine particulier, n'hésitez pas à les décrire.

MODIFIER
Pour clarifier, si j'écris du code dans Jruby, je peux maintenant, dans certains cas, déplacer ce code en dehors de la machine virtuelle si nécessaire, ou à tout le moins j'ai acquis une meilleure compréhension de Ruby. Les compétences Groovy ne s'appliquent que si vous utilisez un langage qui n'existe que dans la machine virtuelle. Jython et Jruby ont cet avantage intégré, que doit donc Groovy pour compenser cet inconvénient?

Si Groovy ne présente aucun des avantages que vous avez trouvés et que vous recommanderiez d'utiliser Jython ou Jruby, faites le moi savoir.

Modifier 2
Merci à tous pour toutes les réponses, la plupart d’entre elles ont le même argument, Groovy s’intègre légèrement mieux avec Java que Jython ou Jruby.

Suivi
En utilisant Netbeans 6.5 comme IDE, j'ai constaté que Groovy s'intègre mieux aux projets Java qu'à Jruby. Je ne sais pas si le manque d'intégration est un échec de Jruby ou de Netbeans. Mais après l’avoir utilisé pour alittle, Groovy semble définitivement avoir une longueur d’avance.

Était-ce utile?

La solution

J'ai effectué un développement assez approfondi sous Ruby et Groovy (ainsi qu'un peu de Jython utilisant Grinder comme outil de test de charge).

Parmi les 3, je préfère Groovy. J'aime le mieux la syntaxe de fermeture et je pense qu'elle possède l'intégration la plus stricte dans son fonctionnement avec les autres classes java de la machine virtuelle Java. J’ai utilisé JRuby pour la dernière fois depuis un moment, mais importer des classes Java et travailler avec le chargeur de classes dans JRuby ne me paraissait pas aussi propre.

Le fait que Groovy soit aussi essentiellement un sur-ensemble de Java signifie que l’énorme population de programmeurs Java aura plus de temps pour assimiler Groovy à Ruby / JRuby. Ils peuvent commencer à le programmer comme en Java et à insérer lentement le groove idomatic au fur et à mesure de leur lecture.

Plus précisément, ce que vous demandez, je pense qu’un autre avantage de Groovy est que le langage que vous utilisez pour optimiser quelque chose est presque la même syntaxe, c’est Java. Si vous travaillez dans les mondes Ruby ou Python, vous devrez aller soit en C qui représente un changement important, soit en Java, qui est également très différent de ces langages. La programmation en Groovy vous aide également à garder vos compétences en Java un peu plus pointues.

Si vous avez un accès particulier à une infrastructure Ruby ou Python, ou à une équipe familiarisée avec ce type d’environnements, je pourrais alors choisir de choisir l’un de ces autres langages.

Vraiment, ces trois langues sont de très belles langues et ce que vous choisissez devrait dépendre davantage du problème que vous essayez de résoudre et des ressources que vous avez à votre disposition. Une fois que vous maîtrisez une langue dynamique, en choisir une seconde ou une troisième est beaucoup plus facile.

Autres conseils

Je dirais que si vous avez besoin de mixer Java avec Jruby / Groovy, allez avec Groovy. Comme tout le monde le dit, Groovy a une intégration Java plus étroite.

Mais pour ce qui est de la mise en œuvre du langage , je préfère le langage Ruby à Groovy, le langage tourne autour de lui-même. Dans Groovy, certains hacks sont inhérents à la mise en œuvre elle-même (il suffit de regarder une pile de Grails contre une pile de Rails et vous verrez ce que je veux dire).

Je vivement recommande de consulter la comparaison de Groovy de Neal Ford. et JRuby

Je pense que Dick Wall a très bien résumé les différences entre ces trois projets sur le podcast Java Posse (n ° 213, environ 34:20) ... "JRuby a été conçu pour rendre les programmeurs heureux ... c'est le choix d'un développeur de langage de programmation; Python est très enraciné dans la simplicité et l’éducation; Groovy est destiné à devenir le choix des développeurs Java ... c’est un environnement très familier pour Java ... avec prise en charge des annotations ".

En ce qui concerne le déplacement du langage en dehors de la machine virtuelle Java, je ne pense pas que le runtime Java impose une surcharge - c'est une installation simple, et vous devez définir des variables d'environnement - mais cela fournit un nombre des avantages, y compris un runtime mature hautement optimisé et un grand nombre de bibliothèques. L'équipe JRuby rapporte maintenant de meilleures performances que l'IRM native. http://blog.headius.com/2008/08/twas-brillig. html

Je n'ai que de l'expérience avec Jython et Groovy. Le principal inconvénient de Jython, pour le moment, est que la dernière version recommandée pour la production (2.2.1) possède un ensemble de fonctionnalités qui "correspond à peu près à celui de Python-2.2". ( FAQ sur Jython ) . Il existe une version bêta implémentant ce que je suppose être Python 2.5, qui est maintenant une version en retard. Je ne sais pas si on peut en dire autant de JRuby.

Je ne sais pas pourquoi vous devriez choisir Groovy parce que je ne connais pas votre parcours. Si vous êtes un développeur Java, Groovy semble plus proche de votre langage actuel que JRuby ou Jython. Groovy combine le meilleur de Java, le langage, Java, la plate-forme et Ruby le langage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top