Tengo más de 10 años de experiencia con Java (¡desde la versión 1.1, de verdad!) Y 7 años de experiencia con .NET (C # en su mayoría).
Tienes que tomar una decisión muy seria, pero sobre todo deberías tratar de dividir en un par de escenarios:
Aplicación de escritorio
Si está desarrollando una aplicación de escritorio, debe elegir la plataforma principal con la que trabajará. Si se trata de una plataforma de Microsoft, use .NET, no hay mejor solución que la plataforma desarrollada por la nave madre. Si se trata de un escenario Linux o multiplataforma, considere Java o cambie a una solución basada en web.
Aplicación basada en web
Esta es una decisión muy difícil de tomar porque cada uno tiene su propia fuerza y debilidad. Aquí hay algunos:
DO#
Fortaleza: actualmente tiene más impulso para crear nuevas características en el lenguaje y la plataforma / marco. Todo proviene de un proveedor y definitivamente esta es una ventaja. También puede utilizar algunos componentes muy potentes como DevExpress, por ejemplo (Java ni siquiera se acerca a tener algo como lo que el equipo de DX ha reunido a lo largo de los años y esto representa un gran aumento de la productividad).
Debilidad: para la aplicación empresarial .NET no es tan maduro como Java. No tiene tantos proveedores que crean software empresarial en .NET como lo tiene para Java.
Java
Fortaleza: Más maduro (ya explicado) y tiene una gran comunidad con varios grandes proyectos de código abierto que pueden ayudar. Varios .NET llamados proyectos de código abierto son realmente solo una copia de proyectos de Java.
Debilidad: Oracle posee Java (lo sé, no el JCP) y definitivamente es un riesgo a tener en cuenta. Sus intenciones no son muy claras y personalmente no me gusta a dónde va el lenguaje en este momento (sé que muchos desarrolladores de Java tienen preocupaciones similares).
Aplicación del lado del servidor
Básicamente son los mismos argumentos que las aplicaciones basadas en la web, pero como no tiene que preocuparse demasiado por la interfaz de usuario, Java se fortalece en este caso. Pero, de nuevo, si la plataforma es principalmente Windows .NET, podría ser una mejor opción.
Consideraciones generales
En general, en mi opinión, .NET tiene la ventaja principalmente debido a la estrecha integración de Visual Studio 2010 (sin duda el mejor IDE disponible), MS SQL, Entity Framework, IIS, etc. Todo esto representa un gran aumento de la productividad y tengo mucha experiencia que lo demuestra. También trabajo con desarrolladores en su mayoría de Java que recurrieron a .NET y comparten básicamente la misma opinión.
Creo que también es un buen punto que Microsoft es más fuerte que nunca, lo que significa que .NET estará allí por un tiempo. Entonces, cuando veo 10-15 años por delante, me siento más seguro con .NET que Java.