2010-11-03 38 views
1

Il y a un peu de hype avec des langages comme Python (que j'aime beaucoup) et Ruby mais j'écrivais un système de taille moyenne en Python et je ressentais le manque d'outils que j'aurais si j'utilisais des fonctionnalités Java: Eclipse, l'intégration de JUnit et certaines fonctionnalités de langage comme attraper des erreurs lors de la compilation.Problèmes lors de l'écriture d'un système moyen/grand

Certaines personnes disent que Java est mort en tant que langage. Mais de gros logiciels importants sont écrits en Java: Hadoop, Lucene et bien d'autres.

Java est-il un meilleur langage que Python ou Ruby pour les logiciels d'infrastructure de taille moyenne/grande comme ceux-ci?

+1

"meilleur" langage? Par mieux voulez-vous dire plus vite? Plus cher? Une plus grande empreinte mémoire de l'exécution? Qu'entendez-vous par "mieux"? –

Répondre

1

Vous avez raison de dire que Java est plus adapté aux logiciels d'entreprise. C'est vraiment là où Java brille: cela fonctionne très bien pour la programmation d'entreprise.

Cependant, vos reproches sur les outils en Python et Ruby ne sont pas fondées. PyDev for Eclipse tire pleinement parti des mêmes fonctionnalités que vous apprécieriez si vous développiez en Java. Ruby a un plugin similaire pour Eclipse. Les cadres de tests unitaires tels que pyunit, nose, et autres existent pour les deux langues (et je crois que PyDev a un support pour les tests unitaires). Aussi, tout comme un compilateur Java attraperait une erreur au moment de la compilation, un script Python donnera des erreurs de syntaxe avant de l'exécuter, avec un système d'erreur (IMO) beaucoup plus compréhensible qu'un compilateur Java. Puisque Python et Ruby sont des langages de script, leur domaine d'expertise se situe plutôt dans les petites tâches, le développement rapide et l'utilisation de frameworks tels que Django ou Rails. Alors oui, des langages plus lourds comme Java sont parfaits pour l'entreprise, mais il y a quelque chose à dire pour l'élégance et la facilité d'utilisation de Python et Ruby.

+0

@S. Lott: Je me suis mal exprimé.J'ai utilisé une partie de la langue que l'auteur de la question utilisait, quand par "système" il voulait dire "entreprise". Quoi qu'il en soit, il a été corrigé –

+0

"Java est plus adapté aux logiciels d'entreprise"? Sans une définition de "Enterprise", cette réponse ne semble pas particulièrement utile. Pourriez-vous développer en définissant "Enterprise"? –

+0

Avis d'opinion recevable: "Enterprise software" dans mon monde se traduit par => "moins de codage, beaucoup d'intégration technologique", essentiellement "assembler" le logiciel à partir de pièces préfabriquées, plutôt que de les inventer. Un concept que je n'ai franchement jamais vu travailler dans mes 7 années d'expérience Java et être dans plus de 10 organisations tout au long de ma carrière. – dimitarvp

0

Tous beaucoup d'une grandeur vraiment. Il y a des fonctionnalités dans Python/Ruby que vous connaissez qui font d'eux une offre plus attrayante que Java. Le typage statique peut être votre meilleur ami la plupart du temps, et une douleur pour l'autre.

Le manque d'outils est lié à l'adoption. Java/C# a une plus grande adoption.

Entreprises/Entreprises et moyennes et grandes organisations, comme pour obtenir des solutions avec des contrats par opposition aux mérites techniques. Par expérience Python a quelques problèmes de vitesse, je ne peux pas commenter sur Ruby, mais j'imagine que si vos applications requièrent une vitesse dédiée, je n'utiliserais pas python.

Le threading et le traitement multi-core ne sont pas aussi bons qu'ils pourraient l'être en python, bien que 2.7 semble améliorer beaucoup de vieux problèmes, je pense que le problème GIL reste encore pour le threading.

Mon seul commentaire sur Java, c'est qu'il a maintenant derrière Oracle, et en fonction de votre position assise et comment vous aimez Oracle, pourrait changer votre attitude envers Java. surtout si vous concevez pour des solutions Open Source.

+1

Ruby souffre de beaucoup des mêmes problèmes de vitesse que Python. –

+5

J'échangerais la productivité humaine pour la performance tous les jours de la semaine car le matériel actuel est moins cher que les développeurs. –

+0

@Paulo: Je ne peux pas être plus d'accord. Être capable d'attaquer les problèmes [presque-] directement (un concept s'appliquant très fortement dans Ruby et beaucoup moins en Java) est d'être un développeur productif. Nous sommes payés pour être productifs, n'est-ce pas? ;) – dimitarvp

1

Ce genre de question peut être très argumentatif ... Pour les logiciels d'entreprise la plupart du temps, le facteur clé est politique, pas technique.

Si vous êtes propriétaire de l'entreprise, utilisez la technologie qui correspond le mieux à votre vision. Sinon, utilisez Java - c'est politiquement plus sûr.

Sur le plan technique, c'est presque un match nul.

+2

+1: Comme "mieux" n'est pas défini dans la question, il est ** subjectif **. Puisqu'il prétend "manquer d'outils" et que "Java est mort", c'est aussi "argumentatif" **. –