web-dev-qa-db-fra.com

Java ou Python ou Ruby pour application Web?

Si je devais implémenter une application Web à partir de zéro aujourd'hui, quelle pile d'application dois-je aller? Trois candidats principaux sont Java, python et Ruby sur Rails (ror). Il y a aussi .NET, mais c'est biaisé vers M $.

Pro-Java:

1) Stacks of thick books
2) Largest developer community
3) Typed languages, which prevents subtle bugs
4) Augmented with groovy interpreted language

Pro-Python:

1) Concise code
2) Thin books
3) Can launch web app for free on Google Apps

Pro-Ror:

1) Concise code
2) Thin books
3) Ruby may be slightly better programming language than python, but they are converging.

Dans l'ensemble, il n'y a pas beaucoup de choix entre Python/Ror. Le choix que je dois faire est entre Java et Python. J'ai légèrement favorisé Java parce que c'est une langue dactylographiée, mais mon bon ami favorise python parce qu'il est plus concis. Les livres épais Java désignent-ils que ses solutions sont plus complètes (et je dois écrire moi-même moins de code)?

32
amit

Choisissez ce qui vous est familier et courez avec.

Ou vous pouvez choisir Django sur Jython pour obtenir le meilleur de Java bibliothèques et codage de vitesse de Python.

Ou Pick Java Si vous devez convaincre quelqu'un que c'est Enterprise-y.

Je dirais que si vous travaillez seul/dans une petite équipe, choisissez simplement celui qui nécessite moins de ressources (indice: python).

22
Swaroop C H

Contexte: Je suis un professionnel Java développeur qui est Django sur le côté.

Java

Java est principalement utilisé dans l'entreprise et il y a de très bonnes raisons pour cela. =Java est une bonne solution si vous avez besoin d'une langue mature, a un bon soutien pour la concurrence, les transactions, l'accès à plusieurs bases de données ... Java est également Une plate-forme très stable. Et par stable, je ne veux pas dire qu'il a moins de bugs que Python ou Ruby, je veux dire que cela ne change pas autant.

Il y a un excellent support d'outil pour Java. Great IDE, excellents outils de refactoring, excellents outils d'analyse statique ... Vous ne trouverez probablement pas autant d'outils de cette qualité pour toute autre langue.

Il y a beaucoup de lent Java applications, mais à mon avis, il s'agit davantage de développeurs utilisant une architecture qu'ils ne comprennent pas, essayant de faire des choses plus compliquées qu'elles ne devaient développer Performance, sites très rapides avec Java.

Django

Django est plus léger, plus amusant de travailler avec. Vous pouvez avoir une application en cours d'exécution en très peu de temps. L'interface administrative est magique pour une opération de crud simple et peut être utilisée pour une logique même assez complexe. Vous pouvez trouver de nombreuses applications réutilisables qui implémentent certaines des fonctionnalités dont vous avez besoin.

Même si Django est maintenant dans la version 1.0, il est loin d'être stable. Si vous devez toujours développer votre projet en 1-2 ans, vous pouvez vous attendre à beaucoup de changements pour suivre le état de Django.

(( Conclusion

Utilisez Java Si vous le connaissez déjà et si vous avez besoin d'une architecture complexe et d'un support à long terme.

Utilisez Django (ou ROR) Si vous souhaitez un développement rapide et que vous ne vous souciez pas de réécrire beaucoup de l'application dans 1-2 ans.

25
Guillaume

Anti-Java:

  • verbeux, parfois encombrant
  • mauvais choix pour les scripts de modèle (peut être atténué en utilisant un langage de script secondaire tel que Groovy, Jython, etc.)

Anti-Python:

  • aucun cadre standard particulier ne doit rechercher et choisir (ou simplement utiliser des modules utilitaires autonomes au-dessus de WSGI)
  • toujours des options d'hébergement relativement limitées (autres que GAE ou son propre serveur)

Anti-ROR:

  • aucun Unicode natif, dans une langue de script Web moderne? Faire honte
  • problèmes d'échelle de performance potentiels

Personnellement, je me suis retrouvé avec Python, mais toutes ces options - ainsi que .NET - sont facilement défendables.

12
bobince

Je recommanderais Java et cadre de printemps - il résout tout le fardeau de typique Java application Web et vous fournit une façon claire pour obtenir ce que vous voulez.

J'utilise personnellement Hibernate - JPA - Cadre de printemps (ou Flux Web de printemps) - Tiles - Freemarker Stack qui me donne la capacité de créer de nouvelles applications Web plutôt rapides, mais ils imposent tout à fait une courbe d'apprentissage plutôt rare.

Je suggérerais - donnez simplement le printemps un essai pour un début.

10
miceuz

Votre application est-elle principalement présentée, base de données (entretien de type CRUD) ou beaucoup de logique back-end?

Pour la plupart des présentations, j'irais Python/Django (ou même PHP).

Pour le simple crud ror le fait lécher.

Pour tout ce qui avec une logique de back-end lourde, ou qui utilise une base de données existante sur legacy, j'irais pour le Java servlets à l'aide du ressort avec Freemarker, Ibatis et Tomcat ou une jetée.

P.s. Ne vous inquiétez pas pour la performance de l'évolutivité - rien ne sera à l'échelle ainsi que la solution Tomcat/Java.

6
James Anderson

Sauf si vous êtes dans une boutique Java/.net ou une raison spécifique pour laquelle vous utiliseriez Java/.NET, je vous suggérerais l'une des plateformes plus optimisées pour le développement Web: Python/Django (ou Ruby/Rails, PHP /Diconigner/gâteau).

Vous trouverez Python/Ruby/PHP tellement plus facile à apprendre, déployer, programme, etc. Il y a beaucoup de littérature à leur sujet et de nombreuses ressources de soutien. Tous ont été utilisés pour produire des grands sites Web (YouTube sur Python, Twitter sur Ruby, Facebook sur PHP).

4
pbreitenbach

Si cela va être en production, utilisez la technologie ce que vous savez le mieux actuellement. Apprendre un nouveau cadre, une langue ou une technologie peut entraîner des retards et au début, votre qualité de code sera plus faible.

2
wvb

J'avais l'habitude d'être un Java Developer, faisant la plupart du temps c # maintenant. Mes arguments contre Java sont-ils (ou au moins était =) une vraie douleur à se mettre en place et à courir. Il convient également mieux aux grandes applications nécessitant beaucoup d'organisation et de maintenabilité. Cela vient cependant à un coût.

Des sons de votre message, je pense que l'une des langues dynamiques serait mieux adaptée. De plus, ils sont plus amusants à jouer avec (IMHO).

1
tsimon