Avantages Groovy sur Jython ou Jruby?
Pourquoi devrais-je choisir d'utiliser Groovy quand je pourrais utiliser Jython ou Jruby? La langue fournit-elle des avantages inhérents pour compenser le fait que les compétences Jython et Jruby sont applicables à leurs langues parentes en dehors de la JVM?
Gardez à l'esprit que je garde délibérément cette question générique, mais s'il y a des avantages qui existent dans un domaine particulier, n'hésitez pas à les décrire.
Modifier
Pour clarifier, si j'écris du code dans Jruby, Je peut maintenant, dans certains cas, déplacer ce code en dehors de la JVM si nécessaire, ou à tout le moins j'ai acquis une meilleure compréhension de Ruby. Alors que les compétences Groovy ne sont applicables que lorsque vous utilisez un langage qui existe juste à l'intérieur de la JVM. Jython et Jruby ont cet avantage intégré, Qu'est-ce que Groovy a pour compenser cet inconvénient?
Si Groovy n'a aucun avantage que vous avez trouvé, et que vous suggérez simplement d'utiliser Jython ou Jruby, faites le moi savoir.
Modifier 2
Merci à tous pour toutes les réponses, la plupart d'entre eux font le même point, Groovy s'intègre légèrement mieux avec Java puis Jython ou Jruby.
Le Suivi de
En utilisant Netbeans 6.5 comme IDE, j'ai trouvé que Groovy s'intègre mieux avec les projets Java puis Jruby. Je ne suis pas sûr si le manque d'intégration est un échec de Jruby ou Netbeans. Mais après l'avoir utilisé pour alittle Groovy semble définitivement avoir une jambe.
5 réponses
J'ai fait un développement assez étendu dans Ruby et Groovy (ainsi qu'un peu de Jython en utilisant Grinder comme outil de test de charge).
Sur les 3, je préfère Groovy le plus. J'aime le mieux la syntaxe de fermeture et je pense qu'elle a l'intégration la plus étroite dans la façon dont elle fonctionne avec d'autres classes java sur la JVM. Cela fait un petit moment que j'ai utilisé JRuby pour la dernière fois, mais importer des classes Java et travailler avec le classloader dans JRuby ne me semblait pas aussi propre.
Le fait que Groovy est aussi essentiellement un surensemble de Java signifie que l'énorme population de programmeurs Java là-bas aura un temps d'absorption plus rapide en ramassant Groovy sur Ruby / JRuby. Ils peuvent commencer la programmation comme Java et lentement commencer à insérer idomatic groovy comme ils le ramasser.
Plus au point de ce que vous demandez, je pense qu'un autre avantage de Groovy est que le langage que vous allez quand vous voulez optimiser quelque chose est presque exactement la même syntaxe, C'est Java. Si vous êtes en travaillant dans les mondes Ruby ou Python, vous devrez passer soit à C qui est un grand changement, soit à Java, qui est également très différent de ces langages. La programmation dans Groovy a tendance à aider à garder vos compétences Java un peu pointues.
Si vous avez un accès particulier à une infrastructure Ruby ou Python, ou à une équipe qui connaît ce genre d'environnements, alors je pourrais voir choisir l'un de ces autres langages.
Vraiment, tous les 3 d'entre eux 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 dont vous disposez. Une fois que vous êtes devenu compétent dans une langue dynamique, ramasser une seconde ou une troisième est beaucoup plus facile.
Je dirais que si vous avez besoin de mélanger Java avec Jruby / Groovy, allez avec Groovy. Comme tout le monde l'a dit, Groovy a une intégration Java plus étroite.
Mais en ce qui concerne la langue mise en œuvre va, je préfère le langage Ruby à Groovy, le langage tourne autour de lui-même, dans Groovy il y a des hacks qui sont inhérents à l'implémentation elle-même (il suffit de regarder un Grails stacktrace VS Un Rails stacktrace et vous verrez ce que je veux dire).
Jerecommande fortement voir la comparaison de Neal Ford de Groovy et JRuby
Je pense que Dick Wall a donné un très bon résumé des différences entre ces trois sur le podcast Java Posse (#213, environ 34: 20 dans)... "JRuby a été conçu pour rendre les programmeurs heureux ... C'est le choix d'un développeur de langage de programmation; Python a des racines très fortes dans la simplicité et l'éducation; Groovy vise carrément à être le choix pour les développeurs Java ... C'est un environnement très familier pour Java ... avec le soutien des annotations".
En termes de déplacement de la langue en dehors de la JVM, Je ne pense pas que le runtime Java impose beaucoup de frais généraux-c'est une installation simple, et vous devez définir des variables d'environnement-mais il fournit un certain nombre d'avantages, y compris un runtime mature qui a été hautement optimisé, et un grand ensemble de bibliothèques. L'équipe de JRuby rapporte maintenant de meilleures performances que L'IRM native. http://blog.headius.com/2008/08/twas-brillig.html
J'ai seulement eu de l'expérience avec Jython et Groovy. Le plus grand inconvénient avec Jython, pour le moment, est que la dernière version recommandée pour la production (2.2.1) a un ensemble de fonctionnalités qui "correspond à peu près à celui de Python-2.2" (Jython FAQ). Il y a une version bêta implémentant ce que je suppose est python 2.5, qui est maintenant une version derrière. Je ne sais pas si la même chose peut être dite pour JRuby.
Je ne sais pas pourquoi vous {[2] } devriez choisir Groovy parce que je ne connais pas votre arrière-plan. Si vous êtes un développeur Java, Groovy se sent plus similaire à votre langue actuelle, alors JRuby ou Jython. Groovy combine le meilleur de Java, la langue, Java, la plate-forme, et Ruby la langue.