Toda aplicación que programes necesita "programas adicionales", si programas en C# necesitarás el Framework .NET, si programas en C/C++ algunas librerías por allí, si programas en Java sólo necesitas JRE (Java Runtime Environment) que viene pre-instalado en la mayoría de equipos (Por eso que se diga que Java es portable, ya que viene pre-instalado en todos los ordenadores). En caso por x razones no lo tengas, lo descargas de la web de oracle o de java.com/es.
A mí, particularmente, me gusta reducir costo. Uso GNU/Linux (Fedora18), no necesitas pagar licencia como en Windows o Mac. Lo segundo que busco es Portabilidad, y aquí es donde gana Java.
Pefectamente puedes escribir tu sistema en C#, pero estás "amarrando" tu sistema a la plataforma .NET, ya que, aunque puedas correr tu sistema en Linux con Mono, puedo decirte que te resultará un dolor de cabeza, al menos por ahora, no es lo "ideal". Ya se verá como evoluciona Mono, es un tema aparte.
Por otro lado, si desarrollas tu sistema en Java, haces tu aplicación Multiplataforma. Esto es, que se ejecute en todos los sistemas operativos sin el menor obstáculo. De allí la frase de Write once, run anywhere (Escríbelo una vez, ejecútalo en cualquier parte), y esto es una gran ventaja para el desarrollador.
Pero, solo TÚ tienes la decisión. Recuerda, en todo caso, el lenguaje es sólo la herramienta del programador, escoge la "herramienta" que mejor te convenga.
Saludos y bendiciones