mayoría de los servidores son Windows o * basado en nix. Entonces, en el servidor, Java o .NET/C# (a través de mono on * nix) serían perfectamente buenos.
Java tiene mejor soporte para diferentes dispositivos de cliente, pero en muchos sentidos ese requisito se reemplaza por la compatibilidad con HTML mucho mejor en la mayoría de los clientes, al menos para dispositivos en línea.
Para una aplicación cliente instalada, se podría decir que Java tiene la mejor portabilidad, pero con cosas como Compact Framework, Micro Framework, Silverlight, etc. .NET se está poniendo al día.
Personalmente (debido a la función de trabajo), me importa principalmente lo que está en el servidor; .NET/C# nunca me ha defraudado, pero no soy un desarrollador de Java, así que no puedo contrastar directamente. Del trabajo en proyectos de código abierto sé que hay una buena comunidad de personas que usan mono en el servidor.
En el cliente, las herramientas como WPF ofrecen una experiencia de GUI de primer nivel, con el soporte de .NET para winforms siendo útil para las aplicaciones de Windows normales. Pero dado que gran parte de la arquitectura de WPF es común con Silverlight (con Moonlight como el gemelo mono de * nix, etc.), esto permite que la experiencia se use también en clientes que no son de Windows.
Como punto aparte - IMO todos los puntos se aplican igualmente a Java y .NET ... así que no estoy seguro son las "razones"; simplemente, "Java llegó primero" explica gran parte de ello. .NET/C# todavía se usan mucho en el uso del servidor; no son solo aplicaciones de Windows. De hecho, dado que mucho desarrollo se basa en la web en estos días, se podría argumentar que (según los números) * la mayoría * del desarrollo de .NET/C# se usa en los servidores; desglosado en ASP.NET, Mono Rails, servidores WCF, servidores de socket, servidores remotos, ASP.NET MVC y otros. –
Además del enfoque OO, el otro punto adicional * no * se aplica a .Net. Java es independiente de la plataforma y se puede usar en un pequeño servidor Linux cuando se inicia y se mueve a una enorme máquina Solaris o Aix cuando se necesita hierro pesado. .Net es de Microsoft, de Microsoft (Mono es un clon incompleto que no está a la altura de los datos que siempre se ponen al día). – nxadm