LA différence entre .NET et Java
17 10 2006
Après avoir répondu à la question .NET ou Java dans mon précédent post. Je reviens à la charge avec une autre question que l’on se pose beaucoup moins souvent.
Quelle est la plus grande différence entre le .NET et Java ?
Réponse : La culture.
Cette fois-ci, la réponse existe, elle est simple et concise. Merci d’avoir lu ce billet. Au revoir.
Vous en voulez plus ? OK.
La culture Java est largement plus complexe que celle que l’on retrouve en .NET. Pour démontrer ceci, je vais plutôt repartir à l’envers en énonçant qu’il est plus simple de partir avec du .NET. Prenons un exemple, imaginons que je doive ajouter une couche d’accès au données à mon application.
La majorité (75% ?) des développeurs .NET auront le réflexe suivant :
- Je regarde l’aide locale sous Visual Studio en tapant des mots clés de recherche.
- Un résultat sera trouvé à coup sûr avec un exemple de code.
- Là, à nouveau la majorité s’arrête et commence à développer avec ce qu’il lit
- Le reste va effectuer quelques recherches sur la MSDN pour obtenir des infos supplémentaires.
- Avec tout ça, on attaque le dev.
Le pattern est simple : Ce que Microsoft dit, le développeur fait. Et MSDN est notre bible.
Malheureusement, cette culture coupe de nombreux développeurs de tout ce qui fait la richesse et la force du Java depuis des années. Par exemple, de nombreuses personnes ont découvert qu’avec Visual Studio Team System, un IDE pouvait nous aider à collaborer sur un référentiel projet contenant tests, docs, TU, etc…
Si l’on reprend ma petite liste du dessus, comment un développeur Java ferait ?
- google.com : « data access java » ou « couche access donnees java »
- pléthore de liens, de solutions d’articles techniques, de blogs…
- Très vite, le développeur constatera que les meilleurs articles parleront ORM / Gestion des Transactions / Indépendance de la base
- Puis il en viendra à se renseigner sur Hibernate / Spring 2 / etc… (Noms au hasard)
Clairement, la 2ème solution sera mieux architecturée et produira un logiciel mieux conçu (si le développeur n’est pas manchot 😉 )
Attention, je ne dis pas ici qu’un développeur Java est plus intelligent qu’un développeur .NET et je ne dis pas non plus que Java est mieux.
J’explique seulement que la différence entre le Java et le .NET est causé par la culture différente des deux ecosystèmes. Dans un cas on fait confiance à une seule autorité. Si Microsoft n’a jamais parlé des Mock Objects Dans son aide ou dans MSDN, les développeurs .NET ne sauront pas de quoi il s’agit… Pour les développeurs Java, il est évident qu’il n’existe pas une source fiable mais de nombreuses à lire et à comparer sur le web.
L’esprit critique est nécessaire quand on développe en Java et c’est une chose que devrait apprendre la communauté .NET.
Même si je suis d’accord avec tout ce que tu as écrit, tu oublis le pendant des 2 :
– Le développeur Java ne se perdra-t-il pas dans tout ça ? Fera-t-il le bon choix ? Et en termes de productivité ?
– Le développeur .Net n’aurat-il pas terminé alors que le développeur Java sera sur son Firefox avec 30 onglets ?!
Bizarre cette idée qui dit que les développeurs .NET sont scotchés sur MSDN. Dans ce cas, comment sont apparus nunit, nmock, cruise control.net, nhibernate, etc ?
Le passage de développeurs java sur du développement .NET y est certainement pour quelque chose mais je crois surtout que l’ouverture d’esprit des utilisateurs de .NET est bien plus grande que ce que l’on voudrait faire croire…
Merci pour vos commentaires constructifs.
Traxx : Je cherchais à généraliser sur les conséquences à moyen et long terme plutôt que de faire une comparaison sur la productivité des langages. Ta remarque n’en demeure pas moins vrai…
Oaz : Je suis le premier à mettre en oeuvre dès que je peux nunit et cie sur les projets.
Historiquement, la plupart des développeurs .NET viennent du monde VB.
Cette majorité qui a fait l’effort de passer à un environnement "moderne" doit maintenant s’adapter encore une fois à ces nouvelles techniques de développement. C’est là où je pense que la culture joue en défaveur.
Mon expérience sur ce point est significative.
J’ai commencé par du .NET, je suis passé au Java/J2EE puis revenu au .NET. Mon point de vue avait radicalement changé…
En revanche j’essaye autant que je peux de combler cette différence au jour le jour avec les équipes que je côtoie et le résultat est souvent gratifiant !
Oaz, on voit bien là, avec tous les projets que tu cites la grande innovation des .Netters : reprendre les projets Java ! Mais bon sang, un .netter pourrait avoir de bonnes idées aussi sans aller refaire la même chose qu’en java. Certe, prenons les bonnes choses quand elles existent mais ça n’interdit pas d’avoir de bonnes idées !
… comment avoir de bonnes idées quand on vit dans un monde fermé, non standard donc incompatible et qui a pris l’essentiel de ces idées chez les autres… ?
désolé, je ne veux pas ecrire le n-ieme troll sur crosoft mais j’ai participé à des projets java : j’ai appris pleins de choses d’autres développeurs et aussi à m’ouvrir au reste du monde… j’ai également participé à des projets disons "Microsoft" et tout était tout le temps fait à l’arrache, les gens ne voulaient surtout pas s’embeter à faire du beau code et ne comprennaient même pas l’interet de le faire… En 8 ans d’expérience, 11 entreprises petites, moyennes et grandes, je pense savoir de quoi je parle, du coup je suis tout à fait d’accord avec l’auteur du post d’origine !!
voici ce qui se passe pour moi : (histoire vrai)
Mon directeur technique actuelle (monde windows) ne comprend pas à quoi peut servir un design pattern, un EJB, le principe DRY, et même un CVS… il veut même mettre des active X dans des pages WEB..! et monsieur sort de centrale !!
Ex : Mon ancien directeur technique (Java – centralien aussi) ne supportait pas que mon code ne soit pas mutualisé à son maximum et que les commentaires ne soient pas hyper explicite…
ya des puristes et je pense que la proportion est plus grande coté JAVA / Linux / open source etc….. qui comprennent l’interet de ces efforts…
Non, je ne me résigne pas vraiment pas généraliser… mais ce que je vois est une réalité pour une bonne majorité des developpeurs et se serait stupide de vouloir cacher…
hehe ce commentaire me fait penser à "Code like a girl"
headrush.typepad.com/crea…
Je crois que je fais partit de ces gens là 😉