Question

Quelle est la meilleure langue dynamique paire avec Java sur un grand projet Java?

Nous envisagent d'utiliser un langage dynamique pour les tests, les contrôleurs, les services. Certaines options sont Groovy, JRuby ou Jython. Quels sont les avantages et les inconvénients de chacun pour cela? Idéalement, nous serions en mesure d'appeler Java à partir du langage dynamique aussi bien appeler la langue de dynamique de Java.

EDIT:. Si elle aide, nous utilisons Hibernate avec PicoContainer et Webwork

Merci, Alex

Était-ce utile?

La solution

Il y a vraiment trois langages dynamiques qui offrent une interop très transparente avec Java - scala, groovy et Clojure. A partir de là, je vais demander à votre équipe quelle langue ils préfèrent travailler ou avoir les essayer un prototype dans chaque langue et voir ce qu'ils pensent.

Si l'efficacité de l'équipe n'a pas d'importance au début, regard à ce problème chaque tentative de langue pour résoudre:

  • Groovy va être très lâche mais naturel pour les développeurs Java expérimentés et permet le développement de prototypes rapides en raison de sa frappe de canard.
  • Scala va vous permettre d'écrire DSLs qui en fait un bon pour les cadres et les outils où vous voulez résoudre le problème dans une langue plus proche de la façon dont vous décrire le problème.
  • Clojure va imposer la programmation fonctionnelle de Lisp et les concepts d'état immuables et pourrait être un ajustement très naturel pour les problèmes dans l'IA, le traitement du langage naturel, etc.

Enfin, je suis allé sur le chemin de la recherche de la langue parfaite pour les projets de base sur et ont trouvé qu'il n'y a pas de langue parfaite. Toutes les langues que je l'ai mentionné ci-dessus à la compilation du code octet JVM natif et sont tout à fait solide. Parfois, il vous suffit de choisir une langue qui pourrait ne pas être aussi cool que les autres mais vous obtient sur la façon de résoudre votre problème.

Autres conseils

Je recommande Groovy , principalement parce qu'elle interagit de façon transparente avec Java, et est presque une surcouche de Java, donc très facile pour un développeur Java pour apprendre. Je n'ai absolument aucune preuve à l'appui, mais d'après ouï-dire, devinettes, et l'expérience personnelle, je soupçonne que la communauté Groovy est beaucoup plus grande que celle de l'un ou JRuby Jython.

Par ailleurs, Groovy ++ est trop immature pour prendre en compte pour l'utilisation de production, mon avis.

La réponse est, bien sûr, va dépendre un peu en matière de goût et de flexibilité. S'il y a des gens qui n'ont de l'expérience avec Ruby ou Python, puis Groovy va avoir une syntaxe beaucoup plus proche de Java (en fait, il est une surcouche de Java), et par conséquent une vente beaucoup plus facile.

Je ne peux pas vraiment parler JRuby comme je l'ai pas utilisé.

Groovy vous donne probablement le plus facile Interop avec Java des trois que vous avez énumérés. Il a aussi une très belle bibliothèque BDD easyb que je aime beaucoup. Du côté négatif, je ne pense pas que les caractéristiques ou la syntaxe de Groovy vraiment ensemble pendent très bien. Il peut genre de sensation comme un tas d'extensions séparées à Java.

Jython est bien sûr Python si la syntaxe est différente, mais elle a aussi toute la cohérence de Python. Interop est très bonne au niveau du script, mais au moins utilisé pour être un peu gênant si vous vouliez écrire des classes pré-compilés dans Jython que vous appelez de Java. L'autre pro principale sur Groovy pour moi est que est que vous avez un vrai REPL pour interagir avec le projet Java.

Je voudrais aussi mentionner Clojure, la syntaxe est encore plus différent, mais le Java Interop est excellent, probablement le meilleur de tous, et encore une fois que vous avez un REPL. Sur le bas côté, si des gens ont des problèmes de réglage à la syntaxe Ruby ou Python alors Lisp est probablement l'endroit.

Clojure est probablement la meilleure langage dynamique pour les contrôleurs et les services. (En fonction de ce que vous entendez par "services".

Scala et Groovy ++ a le meilleur Interop java, mais ceux qui ne sont pas dynamiques (bien Groovy ++ vous décidez pour vous-même ce qui est tapé.). Scala a l'apparence d'un langage dynamique. Scala a de bons cadres de test http://www.scalatest.org/ et Spéc et AKKA est très matures pour les services et a également des API Java

Je vous suggère d'aller avec Jython . La syntaxe est propre, et vous obtenez tout pouvoir / commodités supplémentaires que Python vous donne.

Par exemple, si vous deviez aller avec Groovy, vous êtes essentiellement limité à ce que Java vous donnera. Jython ajouterait les pouvoirs de Python aussi.

Si elle aide tout, je l'ai utilisé Jython avec Hibernate, SOAP, Corba, et il est EJBs et beaucoup plus facile que de faire la même chose avec Java tout simplement.

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