Parce que la plateforme .NET n'est pas aussi géniale que vous le pensez :
- On commence à peine à essayer les capacités multiplateformes maintenant, alors que la JVM l'a fait pendant 20 ans.
- Microsoft centric, quasiment pas de mouvement Open Source ou de pilotes d'écosystèmes
- ... ce qui conduit à aucun choix : Outil juste Visual Studio, technologies juste ASP, WPF, WCF, Xamarin, etc c'est tout de Microsoft et aucun concurrent à l'horizon. Ou vous devez acheter des bibliothèques. Le problème est aussi, que cela a façonné la communauté aussi.
- Pour tout ce que vous voulez ou avez besoin de faire, il y a une ou souvent plus d'une bibliothèque pour le faire en Java.
- Visual Studio n'est pas si grand par rapport à IntelliJ et en partie même Eclipse (débogage, oh cmon)
- SharePoint, assez dit
- Can't vraiment dire, parce que je'n'ai jamais travaillé avec elle, mais des gens que j'ai entendu de ASP est la douleur de travailler avec. De toute façon la tendance est au côté client.
- Android est nativement Java, iOS est nativement Objective-C / Swift. Si vous voulez faire du cross-mobile, il y a beaucoup de frameworks plus établis que Xamarin. Personne ne fait de l'UWP. Microsoft a abandonné son système téléphonique.
- Ce qui nous amène au point suivant : Microsoft a un record d'abandon de technologies, de nombreux développeurs se sont brûlés les doigts et ont vu leur carrière détruite du jour au lendemain à cause d'une annonce soudaine. Ils disent "plus jamais ça".
- Rien de comparable sur l'espace big-data / clustered computing.
- La JVM est très en avance en termes de performance et d'outils. Les gens savent comment la régler pour leur cas d'utilisation.
- Diversité des langages (avec une base d'utilisateurs). VB, IronPython et F# contre Scala, Clojure, Kotlin, Groovy, Ceylon, JRuby, Jython, Nashorn,...
C'est'dommage car C# est effectivement un beau langage.
Autres raisons:
- Beaucoup d'entreprises ont déjà de gros systèmes Java. A complete rewrite is costly.
- Universities rarely teach C# as a mandatory course.