Leistung - Gleichmäßig
Beide Plattformen eignen sich hervorragend für nahezu alle Anwendungen.
Es ist nicht wirklich viel, um sie zu unterscheiden, obwohl meine subjektive Erfahrung ist, dass Java für lang laufende Anwendungen einen leichten Vorteil hat, während .Net für die Startzeit von Anwendungen schneller ist.
Verfügbare Tools (auch Tools von Drittanbietern) - fraglich
Hängt davon ab, welche Tools Sie benötigen und mit welchen Sie vertraut sind.
.Net hat sicherlich einige großartige Tools von Microsoft. Andererseits gibt es in der Java-Welt ebenso gute Tools, z. B. in Eclipse, Netbeans von IntelliJ-Umgebungen.
Plattformübergreifende Kompatibilität - Java Win
.Net ist grundsätzlich an Microsoft-Plattformen (Windows, Xbox usw.) gebunden. Für Plattformen, die nicht von Microsoft stammen, sind keine vollständigen Implementierungen verfügbar .
Mono ist nett, bietet Ihnen jedoch nicht die vollständige plattformübergreifende Funktionalität, da es nicht alle .Net-Bibliotheken unterstützt (Sie können beispielsweise nicht erwarten, dass alle Windows-GUI-Funktionen ordnungsgemäß funktionieren, sofern Sie nicht zu wechseln) Ein plattformübergreifendes Toolkit wie GTK # (Sie können Ihre App nicht auf verschiedenen Plattformen ausführen.)
Java ist wirklich portabel. Nicht nur die Sprache, sondern vor allem alle Java-Bibliotheken sind portierbar. Wenn Sie sich an reine Java-Bibliotheken halten (z. B. Swing for GUI), wird Ihr Code überall dort ausgeführt, wo Sie eine Java-Laufzeitumgebung haben.
Bibliotheken (insbesondere Bibliotheken von Drittanbietern) - Java Win
Die wahrscheinlich beste Stärke der Java-Plattform ist das riesige Bibliotheks-Ökosystem, insbesondere Open-Source-Bibliotheken. Einige Beispiele:
- Alle Apache-Bibliotheken und -Tools
- Alle Bibliotheken im riesigen Eclipse-Ökosystem
- Alle von Google zur Verfügung gestellten / verwalteten Bibliotheken
- JBoss und alle zugehörigen von Red Hat verwalteten Unternehmenstools
Kosten (Oracle scheint zu versuchen, Java zu monetarisieren) - Java gewinnt, wenn Sie Open Source gehen, andernfalls Even.
Sie können einen 100% Open Source Java-Stack haben, der kostenlos ist und Sie nicht an eine bestimmte proprietäre Plattform bindet. Dies ist 100% kostenlos.
Alternativ können Sie IntelliJ IDEA kaufen, Java unter Windows ausführen und eine proprietäre Datenbank verwenden. In diesem Fall entspricht dies in etwa den Kosten eines typischen Microsoft .NET-Stacks.
Entwicklungsprozess (am einfachsten / am schnellsten) - umstritten
Dies hängt wahrscheinlich eher von der Erfahrung Ihrer Entwickler mit den einzelnen Plattformen ab als von den jeweiligen Attributen der Plattform.
.Net hat sicherlich einige großartige Tools, die Sie für einfache GUI-Apps unter Windows sehr produktiv machen können. Kein Wunder, denn dies ist der "Sweet Spot" für die .Net-Entwicklung.
Andererseits bevorzuge ich den Java-Stack für die serverseitige Entwicklung. Mit Tools wie Maven und allen Funktionen für die kontinuierliche Bereitstellung / Integration können Sie einen sehr effektiven Entwicklungsprozess für robuste serverseitige Apps einrichten.
In Bezug auf die Sprache bietet C # einige Produktivitätsvorteile gegenüber Java. Wenn Sie jedoch heutzutage auf der Java-Plattform entwickeln, besteht der Trend nicht darin, Java selbst zu verwenden, sondern stattdessen eine der neuen JVM-Sprachen wie Scala, Groovy oder Clojure zu verwenden. Wenn Sie dies tun, sind Sie weitaus produktiver als entweder C # oder Java.