Je prévois d'élargir mes perspectives dans la plate-forme JVM et j'ai un dilemme: que dois-je apprendre en premier? Pourriez-vous expliquer quels sont les avantages de Groovy, Scala et d'autres langages pour la JVM? Merci.
Réponses
Trop de publicités?Je voudrais prendre un coup d'oeil à la Scala de premier de tous. James Strachan (créateur de Groovy) dit que, si elle existait déjà, il a probablement n'aurait jamais créé Groovy. Cette entrée de blog, couvre beaucoup de décent caractéristiques de la Scala (typage statique, l'inférence de type, de fermetures, de mixin etc.)
Scala a beaucoup d'élan derrière elle, et son aspect fonctionnel signifie que vous ne serez pas seulement apprendre une nouvelle JVM de la langue, mais un nouveau paradigme (programmation fonctionnelle — en supposant que vous n'avez pas fait cela avant).
Je reporte des comparaisons entre les Scala, Groovy et Clojure à la réponse que j'ai faite à cette question déjà.
Je vais ajouter, ensuite, JRuby et Jython. Deux de ces compilateurs ne sont pas encore là, surtout à cause de la JVM n'est pas jouer gentil avec les langages dynamiques, de sorte qu'ils ont à passer à travers des cerceaux.
Maintenant, Ruby et Python sont certainement deux des plus importants dynamique des langues aujourd'hui. Alors qu'ils certainement en concurrence les uns contre les autres, ils sont tout à fait différentes par eux-mêmes, dans la communauté et de la philosophie.
Python est sur le choix de la bonne Manière et de s'y tenir. Il est particulièrement conscient de la forme, et pense que la forme et la sémantique ne doit pas être dissocié, l'exemple le plus évident de ce qui est de la décision de délimiter des blocs par identation. Tant que le particulier les décisions prises en Python d'accord avec vous, c'est une langue qui va plaire aux gens qui apprécient la stabilité.
Ruby est d'aller à Votre Façon, l'exemple le plus frappant est l'empressement avec lequel les développeurs Ruby étendre le langage et les bibliothèques, parfois au détriment de l'interopérabilité lors de l'utilisation de plusieurs bibliothèques. Leur réponse à cette fin le développement est aussi très révélateurs: ils travaillent sur les moyens de continuer à le faire sans causer de tels problèmes. Les personnes qui aiment bricoler peut bien préférer Ruby.
Python a certainement une longueur d'avance -- retour en 99 il avait déjà un nom, tandis que Ruby était lentement en faisant des incursions comme une solution de rechange. Ruby ne deviendrait un concurrent lorsque les Rails sont venus, et Ruby on Rails a pris le web par la tempête, laissant un chemin d'imitateurs (par exemple, Groovy du Graal).
Les deux langues ont une très forte communauté et les caractéristiques, et les plus susceptibles facteur de choix est personnel, subjectif, de préférence.
Ce qui nous remettre à la Scala, Groovy et Clojure.
Groovy est le plus fort, c'est que sa syntaxe est très, très proche de Java, de sorte qu'un programmeur Java peuvent profiter des avantages d'un langage dynamique, presque sans effort.
Clojure est point fort, c'est que c'est un Lisp. Il dispose de quelques fonctionnalités avancées, telles que le logiciel de la mémoire transactionnelle, mais, en fin de compte, le fait que c'est un Lisp est plus susceptible d'influer sur la décision d'adopter ou non.
Enfin, la Scala est statiquement typé, ce qui la met dans une tout autre catégorie de tous les autres. Ce qui rend souvent les gens de groupe avec les autres, c'est qu'il est très concis et les frais généraux du langage, à l'instar de ceux de langages dynamiques. En ce sens, un programmeur Java, peut-être plus à l'aise avec elle que Groovy, que l'on obtient les avantages de concise des programmes sans renoncer à typage statique.
Je dirais que cela dépend de votre expérience et de vos objectifs. Groovy serait la plus facile de transition, et si vous ne la connaissez pas déjà une bonne dynamique de la langue, ce serait une bonne idée. Vous pouvez démarrer avec Java et puis "Groovify", et c'est la seule langue, avec un co-compilateur pour compiler votre Groovy et Java tout à la fois. Vous pouvez facilement étendre une classe Java avec Groovy, puis étendre cette Groovy avec Java. Essayez que dans tout autre JVM de la langue. Étant donné que Groovy a été acquis par SpringSource, et comment il se mélange avec Java, j'ai l'impression que sa va devenir la langue utilisée le plus aux côtés de Java. Au moins dans le court terme. Même juste comme un remplacement pour les configurations xml, il a beaucoup à offrir.
Quand il descend à lui, Groovy, Python et JRuby, JavaScript sont vraiment tous les mêmes. Ils ont quelques différences dans la syntaxe, et quelques légères différences de fonctionnalité, mais dans le grand schéma des langages de programmation, il n'est pas beaucoup plus que la préférence personnelle. De ceux-ci, si vous êtes un programmeur Java, je pense que Groovy est le meilleur parce qu'il est vraiment construit pour travailler avec Java et je pense qu'il y a un réel avantage à l'apprentissage et à l'utiliser comme un outil. JRuby et Jython sont vraiment juste agréable de sorte que vous avez accès à la JVM et les bibliothèques Java à partir d'une langue que vous préférez.
Si vous voulez vraiment essayer quelque chose de nouveau et, éventuellement, l'esprit de l'expansion, je voudrais aller avec Scala ou Clojure. La programmation fonctionnelle a beaucoup de buzz ces derniers temps, surtout en raison des avantages en ce qui concerne la programmation simultanée. Les deux Scala et Clojure sont bien adaptés à ce domaine, mais je pense que Clojure victoires ici. Je pense que les deux langues sont vraiment bien fait, et vous devriez probablement vous apprendre les deux ;) Si je devais en choisir un pour commencer, je dirais que Clojure serait plus simple d'apprendre complètement (c'est un Lisp, donc il n'y a pas grand-chose en termes de syntaxe), mais je suppose que Lisp est l'un de ceux-facile à apprendre, difficile à maîtriser ind de choses.
Scala est à l'opposé. C'est une richesse de la syntaxe. Il a donc de nombreuses fonctionnalités, il vous faudra un long temps d'explorer tous les d'entre eux. Cependant, beaucoup de gens vraiment ne voir Scala comme l'avenir de la JVM. C'est le seul qui est statiquement typé. Il a une bonne intégration avec Java (bien que pas aussi bon que Groovy). Il a décent IDE de soutien, de mieux en mieux tout le temps. Et il est vraiment fondamentalement un paradigme différent de Java. Vous allez développer votre cerveau de l'utiliser. Vous n'aurez probablement pas envie de revenir à Java par la suite :)
Si je devais en choisir un seul de ces éléments à apprendre, je voudrais aller avec Scala. Si vous souhaitez apprendre une nouvelle langue afin de tester les eaux, je voudrais aller avec Groovy.
Je ne peux pas le recommander scala assez haut. Je dois dire que j'ai trouvé Python lambda de la syntaxe et de Rubis) pas clair, alors que Scala est particulièrement naturel et concis:
coll.foreach(println)
Il y a une énorme quantité de pensée allé à la scala, à la bibliothèque et le type de système et de leur simplicité masques certains très puissants concepts (comme l'utilisation d' Option
au lieu de renvoyer null
).
Je dirais aussi que le fait d'avoir un statiquement typé langue est très utile lorsque le support de l'outil qui est derrière ce que vous vous attendez à voir du monde Java (par exemple, dans refactoring)
JRuby est bon. Il est activement développé, en effet, il est toujours à jour avec la dernière IRM. JRuby exécute également des Rails et de nombreuses autres bibliothèques Ruby vraiment bien. Vous pouvez même déployer des applications Rails sur la JVM du serveur d'applications, projet de kenai est un exemple de cela. La performance est sur un pied d'égalité avec l'IRM Rubis.
Scala est également à prendre de l'élan. Twitter est un exemple qui utilise la Scala pour leur backend. Scala introduit également la programmation fonctionnelle paradigme pour les programmeurs Java.
Jython est pas encore là. Il est encore plus lent que Disponible et manque encore de simples fonctions.
Groovy prétend être un langage dynamique qui est destinée à être facilement capté par les développeurs Java, mais soupir , il n'est tout simplement pas aussi bon que les autres langage dynamique comme Ruby ou Python. Mais la syntaxe devrait être familier pour les programmeurs Java. Mais encore une fois, James est l'entrée de blog m'a fait vraiment sceptique sur Groovy ces derniers temps.