J'ai plus de 10 ans d'expérience avec Java (depuis la version 1.1, vraiment!) Et 7 ans d'expérience avec .NET (principalement en C #).
Vous avez une décision très difficile à prendre, mais vous devez surtout essayer de décomposer en quelques scénarios:
Application de bureau
Si vous développez une application de bureau, vous devez utiliser la plate-forme principale avec laquelle vous allez travailler. S'il s'agit d'une plate-forme Microsoft utilisant .NET, il n'y a pas de meilleure solution que la plate-forme développée par le vaisseau mère lui-même. S'il s'agit d'un scénario Linux ou multi-plateforme, envisagez Java ou passez à une solution Web.
Application basée sur le Web
C'est une décision très difficile à prendre car chacun a sa force et sa faiblesse. En voici quelques unes:
C #
Force: a actuellement plus de dynamisme en créant de nouvelles fonctionnalités dans le langage et la plateforme / structure. Tout vient d'un seul vendeur et c'est définitivement un avantage. Vous pouvez également utiliser des composants très puissants comme DevExpress par exemple (Java n’est pas proche de ce que l’équipe DX a mis au point au fil des ans et cela représente un énorme gain de productivité).
Point faible: pour les applications d’entreprise, .NET n’est pas aussi mature que Java. Vous n’avez pas autant de fournisseurs qui construisent des logiciels d’entreprise dans .NET que vous en avez pour Java.
Java
Force: Plus mature (déjà expliqué) et a une grande communauté avec plusieurs grands projets open source qui peuvent aider. Plusieurs projets Open Source .NET ne sont en réalité que des copies de projets Java.
Point faible: Oracle appartient à Java (je sais, pas au JCP) et cela constitue certainement un risque à prendre en compte. Leurs intentions ne sont pas très claires et personnellement, je n'aime pas le sens du langage (je sais que beaucoup de développeurs Java ont des préoccupations similaires).
Application côté serveur
Ce sont fondamentalement les mêmes arguments que les applications basées sur le Web, mais parce que vous n'avez pas à vous soucier de l'interface utilisateur, Java devient plus fort dans ce cas. Mais encore une fois, si la plate-forme est principalement Windows .NET pourrait être un meilleur choix.
Considérations générales
Globalement, à mon avis, .NET a principalement l'avantage en raison de l'intégration étroite de Visual Studio 2010 (le meilleur IDE du marché), de MS SQL, de Entity Framework, de IIS, etc. Tout cela représente un énorme gain de productivité et j'ai beaucoup d'expérience à prouver. De plus, je travaille principalement avec des développeurs Java qui se sont tournés vers .NET et qui partagent essentiellement le même avis.
Je pense que le fait que Microsoft soit plus fort que jamais signifie également que .NET sera là pendant un certain temps. Ainsi, lorsque je regarde dans 10 ou 15 ans, je me sens plus en sécurité avec .NET qu'avec Java.