Ich habe mehr als 10 Jahre Erfahrung mit Java (seit Version 1.1, wirklich!) Und 7 Jahre Erfahrung mit .NET (meistens C #).
Sie haben eine sehr bedenkliche Entscheidung zu treffen, aber meistens sollten Sie versuchen, sich in ein paar Szenarien zu unterteilen:
Desktopanwendung
Wenn Sie eine Desktop-Anwendung entwickeln, müssen Sie sich für die Hauptplattform entscheiden, mit der Sie arbeiten werden. Wenn es sich um eine Microsoft-Plattform handelt, die .NET verwendet, gibt es keine bessere Lösung als die vom Mutterschiff selbst entwickelte Plattform. Wenn es sich um ein Linux- oder plattformübergreifendes Szenario handelt, ziehen Sie Java in Betracht oder wechseln Sie zu einer webbasierten Lösung.
Webbasierte Anwendung
Dies ist eine sehr schwierige Entscheidung, da jeder seine eigenen Stärken und Schwächen hat. Hier sind ein paar:
C #
Stärke: Hat derzeit mehr Schwung beim Aufbau neuer Funktionen in der Sprache und der Plattform / dem Framework. Alles kommt von einem Anbieter und das ist definitiv ein Vorteil. Sie können auch einige sehr leistungsstarke Komponenten wie zum Beispiel DevExpress verwenden (Java kommt nicht einmal annähernd an das heran, was das DX-Team im Laufe der Jahre zusammengestellt hat, und dies bedeutet einen enormen Produktivitätsschub).
Schwäche: Für Unternehmensanwendungen ist .NET nicht so ausgereift wie Java. Sie haben nicht so viele Anbieter, die Unternehmenssoftware in .NET erstellen, wie Sie es für Java getan haben.
Java
Stärke: Ausgereifter (bereits erklärt) und eine große Community mit mehreren großartigen Open Source-Projekten, die helfen können. Einige .NET-Open-Source-Projekte sind eigentlich nur eine Kopie von Java-Projekten.
Schwäche: Oracle besitzt Java (ich weiß, nicht das JCP) und das ist definitiv ein zu berücksichtigendes Risiko. Ihre Absichten sind nicht sehr klar und ich persönlich mag es nicht, wohin die Sprache gerade geht (ich weiß, dass viele Java-Entwickler ähnliche Bedenken haben).
Serverseitige Anwendung
Es sind im Grunde die gleichen Argumente wie bei den webbasierten Anwendungen, aber da Sie sich nicht zu viele Gedanken über die Benutzeroberfläche machen müssen, wird Java in diesem Fall stärker. Aber auch hier ist Windows .NET die bessere Wahl, wenn es sich hauptsächlich um eine Plattform handelt.
Allgemeine Überlegungen
Insgesamt hat .NET meiner Meinung nach den größten Vorteil, weil Visual Studio 2010 (zweifellos die beste IDE da draußen), MS SQL, Entity Framework, IIS usw. eng integriert sind. Dies alles stellt einen enormen Produktivitätsschub dar, und ich habe jede Menge Erfahrung damit. Außerdem arbeite ich mit hauptsächlich Java-Entwicklern zusammen, die sich an .NET gewandt haben und im Grunde die gleiche Meinung vertreten.
Ich denke, es ist auch ein guter Punkt, dass Microsoft stärker ist als je zuvor, was bedeutet, dass .NET für eine Weile da sein wird. Wenn ich 10-15 Jahre in die Zukunft schaue, fühle ich mich mit .NET sicherer als mit Java.