Yo no estoy del todo de acuerdo con vosotros.
Considero que C# es un gran avance tecnológico respecto a Java, y no solo un "clon de Microsoft". El lenguaje C# se diseñó para maximizar las posibilidades de uso de la CLR, y uno de los objetivos que se marcaron desde el principio es mantener un altísimo rendimiento para la ejecución (gran talón de aquiles de Java). De hecho como todos saben C# se diseñó para ser compilado en tiempo de ejeucución (JIT), mientras que a Java esa característica le llegó con el tiempo. Por otra parte el propio C# como lenguaje tiene muchas más posibilidades que Java, al que le empiezan a pesar los años.
Si es que nuestro querido C++ fuera a desaparecer algún día no me importaría que fuera porque un lenguaje como C# le ha sustituido, cosa que Java no tiene el poder suficiente para hacerlo.
Aquí vuelvo a poner un enlace en el que se hace la conversión del juego Quake II a CLR en C++:
http://zone.ni.com/devzone/conceptd.nsf/webmain/54CD4A0FFB56171E86256DA5004F6B90
Cuando esto lo pueda mover la máquina virtual de Java, que me avisen. La razón por la que no se puede programar en C++ es porque MS quiere promocionar su C#, cosa que no me parece mal, al fin y al cabo es su criatura. Pero recordad que los compiladores de C++ de MS también generan código CLR, por lo que es una decisión más bien política y no técnica el que no se pueda hacer.
La idea de ejecución de código en una segura "sand box" es una gran baza que le va a permitir a MS a darle vidilla a la consola, gracias a las colaboraciones de aficionados y semiprofesionales, con la seguridad de que nadie pueda acceder directamente al hardware. No obstante C# también tiene la opción de ejecutar código no administrado para las partes más críticas de la aplicación.
Cuando Microsoft termine de diseñar la biblioteca de funciones para el acceso a la consola XNA, si lo hace correctamente no será necesario dar acceso directo al hardware. Los tiempos de la optimización en ensamblador a mano están condenados a desaparecer a favor de un ciclo de desarrollo más corto.
Las optimizaciones que se han incluido en DX10 son mucho mayores desde un punto de vista de rendimiento que las pérdidas que pueda suponer la ejecución de código administrado. Esperemos que esto se vea reflejado en las versiones definitivas.
Yo veo en lo del C# (CLR, .NET,...) una gran apuesta de futuro por parte de MS: Todo lo que se haga con ello será compatible con futuros hardwares sin ni siquiera tener la necesidad de recompilar nada!!! Es decir para futuras XBOX u otros dispositivos multimedia que saque MS los programas desarrollados ahora serían compatibles, independientemente del procesador y GPU que incorporen, y todos conocemos las dificultades que se tiene cuando se intenta ejecutar código máquina que accede directamente a los dispositivos entre máquinas distintas mediante emuladores.
¿Merece la pena una caida de rendimiento de un 15% si a cambio tenemos el disfrute de un lenguaje moderno y bien estructurado como C#, la seguridad y comodidad de su código administrado, y la compatibilidad directa con futuro hardware? Yo creo que sí.