Bueno los invito a esta votación,
Por favor no quiero ver a los fanáticos haciendo votaciones y comentarios sin sentido.
En especial a los de java (y perdonarán), que al igual que linux hay demasiados fanáticos, y si llega a haber algún fanático de C# por favor abstenerce también.
Quiero comentarios profesionales please.

Por mi parte les puedo decir que me quedo con C#,
he tenido expriencia con Java y con C#, especialmente con trabajos alejados del manejo de formas y bases de datos, es decir:
- XML</li>
- Sockets</li>
- Threads</li>
- etc...</li>
Y en todos ellos C#.Net provee mayor facilidad y diversidad para hacer las cosas, en algunos casos puede que esta percepcion se deba a que no conozco java, pero igual c# tampoco pero he encontrado y aprendido a hacer las cosas más facilmente con c# que en java.
XMLPara el caso de XML en java hay que usar cosas como JMod, el cual sin lugar a dudas es muy utilizado pero a mi modo y debido a las caracteristicas de XML todo termina siendo ciclos y ciclos de iterators... jajaja en C# támbien es un enrredo pero es mucho más facil de implementar.
SocketsComo es de suponerse la implementación de socket de .NET y de Java hacen lo mismo, pero la versión de .NET es mucho más facil de utilizar.
ThreadsHasta donde conozco la version de Threads de java me permite utilizarlos siempre y cuando una clase herede de Threads o bien implemente la interfaz Runnable, bien esto me limita a que solopueda disparar como hilo el metodo start (run), asi que si tengo una clase:
public class clase extends Thread
{
Thread t;
...
...
public void run()
{
...
...
}
...
public void Método()
{
...
}
}
No puedo lanzar el metodo Método como un hilo, ya que el hilo centra su ejecucion en el metodo run, si quisiera disparar el método Método como un hilo, deberia incluirlo en el run o bien crear una clase aparte donde el metodo start tubiese la implementacion del metodo Método, en cambio en C# puedo tener un esquema parecido al anterior o bien:
public class clase
{
Thread t;
...
...
...
public void HiloMetodo()
{
t = new Thread(new ThreadStart(Método)
t.Start();
}
public void Método()
{
...
}
}
Asi que puedo lanzar la funcion Método como un hilo independientemente de als caracteristicas de la clase.
Es posible que en Java se pueda hacer algo similar, pero hasta el momento nunca lo he podido hacer.
Bueno estas son solo algunas de las razonnes por las que prefiero C#.Net como ven casi todo se centra en lo que dije:
Se aprende más rápido
Más facil de usar
Más facil de encontrar lo que uno necesita ( lenguaje más natural)