Performance - Même
Les deux plates-formes fonctionnent extrêmement bien pour pratiquement toutes les applications.
Pas vraiment pour les différencier, bien que mon expérience subjective soit que Java a un léger avantage pour les applications de longue durée, tandis que .Net est plus rapide pour le démarrage des applications.
Outils disponibles (même des outils tiers) - Discutable
Cela dépend des outils dont vous avez besoin et de ce que vous connaissez.
.Net a certainement d'excellents outils fournis par Microsoft. D'autre part, il existe de bons outils dans le monde Java, par exemple dans les environnements Eclipse, Netbeans of IntelliJ.
Compatibilité multiplateforme - Java win
.Net est fondamentalement lié aux plates-formes Microsoft (Windows, Xbox, etc.). Les implémentations complètes ne sont disponibles pour aucune plate-forme non Microsoft .
Mono est sympa, mais il ne vous donne pas en fait une capacité multiplateforme complète car il ne prend pas en charge toutes les bibliothèques .Net (par exemple, vous ne pouvez pas vous attendre à ce que tous les éléments de l'interface graphique Windows fonctionnent correctement, donc à moins que vous ne passiez à une boîte à outils multiplateforme telle que GTK #, vous ne pourrez pas exécuter votre application sur différentes plates-formes)
Java est vraiment portable. Pas seulement le langage, mais plus important encore, toutes les bibliothèques Java sont portables. Si vous vous en tenez aux bibliothèques Java pures (par exemple Swing for GUI), votre code s'exécutera partout où vous disposerez d'un environnement d'exécution Java.
Bibliothèques (en particulier les bibliothèques tierces) - Java win
La meilleure force de la plate-forme Java est probablement le vaste écosystème de bibliothèques, en particulier les bibliothèques open source. Quelques exemples:
- Toutes les bibliothèques et outils Apache
- Toutes les bibliothèques du vaste écosystème Eclipse
- Toutes les bibliothèques ont contribué / maintenu par Google
- JBoss et tous les outils d'entreprise associés gérés par Red Hat
Coût (Oracle semble essayer de monétiser Java) - Java gagne si vous optez pour l' open source, sinon Even.
Vous pouvez avoir une pile Java 100% open source qui est gratuite et ne vous lie à aucune plate-forme propriétaire particulière. C'est 100% gratuit.
Alternativement, vous pouvez acheter IntelliJ IDEA, exécuter Java sur Windows et utiliser une base de données propriétaire, auquel cas c'est à peu près le même coût qu'une pile Microsoft .NET typique.
Processus de développement (le plus simple / le plus rapide) - Discutable
Cela dépend probablement plus de l'expérience de vos développeurs avec chaque plate-forme plutôt que de l'attribution particulière de la plate-forme.
.Net possède certainement d'excellents outils qui peuvent vous rendre très productif pour des applications GUI simples sur Windows. Pas étonnant car c'est le "sweet spot" pour le développement .Net.
D'un autre côté, je préfère la pile Java pour le développement côté serveur. Avec des outils comme Maven et toutes les capacités de déploiement / intégration continues, vous pouvez établir un processus de développement très efficace pour des applications robustes côté serveur.
C # en termes de langage présente certains avantages de productivité par rapport à Java. Mais d'un autre côté, si vous développez sur la plate-forme Java de nos jours, la tendance n'est pas d'utiliser Java lui-même, mais d'utiliser plutôt l'un des nouveaux langages JVM tels que Scala, Groovy ou Clojure - si vous le faites, vous serez beaucoup plus productif. que C # ou Java.