La plataforma .NET es similar a Java en cuanto a que genera código compilado (sí, Java tb es compilado, luego te digo pq), pero la diferencia es q .NET realiza un precompilado primero cuando desarrollas, y un compilado definitivo para la máquina destino al ejecutar.
Es decir, nosotros escribimos un programa en .NET, y generamos un código precompilado, que no puede ser ejecutado por ningún microprocesador actual. Al ejecutarse el programa por ejemplo en un Athlon, se compila obteniendo como resultado el programa con el juego de instrucciones del Athlon.
Si ese mismo ejecutable lo llevas a una máquina Alpha, al ejecutar se compila obteniendo instrucciones Alpha, de tal forma que los programas no pierden eficiencia.
Para conseguir el compilado en tiempo de ejecución es necesario tener instalado en la máquina un paquete de Microsoft llamado .NET FrameWork, que es el encargado de realizar esta acción. Es similar al Java Virtual Machine.
En el caso de Java, tb es código compilado, pero utilizando un juego de instrucciones para una máquina inexistente. Las primeras Java VM realizaban una emulación en tiempo de ejecución. Ahora lo que se hace es recompilar todo el código para la máquina de destino al ejecutar el programa, de tal forma que no es necesario emular nada en tiempo de ejecución. Aun así, el código generado no es demasiado óptimo, y las aplicaciones suelen consumir demasiado micro.
Una de las ventajas de .NET es q el código es bastante óptimo. Otra que al ser Visual Studio es muy posible que las aplicaciones futuras se realicen en ese entorno, por lo que podrán ser ejecutadas en cualquier ordenador equipado con Windows (y si el proyecto de portarlo a Linux va bien, pues en cualquier Linux). Otra más es q utilices el lenguaje que utilices (VBasic, VC++, C#, y otros más que serán soportados en el futuro) el código resultante será identico e igualmente optimizado, así q se puede elegir el lenguaje de programación que más rabia nos de.
Ah, se me olvidaba, que el nuevo lenguaje C# es muy similar a Java. Si lo miras, verás que la sintaxis es prácticamente la misma, y que trae un montón de objetos hechos a disposición del programador. Es un lenguaje muy muy interesante que no te costará nada entender. Salu2.