Or, more accurately C♯

Microsoft panicing about how Java was doing so well, took the idea of a VirtualMachine (like the Java VM) and created their own one called ".NET". Then, as an "innovation" they allowed multiple languages to target this VirtualMachine, but the main language is "C♯" (pronounced C Sharp). It's been said that all the languages that have been ported to .NET just end up being "skins" on top of C♯.

MiguelDeIcaza decided that .NET was a good idea, so he's busy working on "Mono", an implementation of the .NET "Framework" for POSIX compliant OS's.

The idea of using a VirtualMachine isn't a new one, the oldest case I'm aware of is perhaps SmallTalk or even Pascal's "p-code". The reason it's so "hip" and "trendy" at the moment is that you can easily sandbox a VirtualMachine1?2? and thus provide security. It also provides "Compile once and run anywhere", which as almost everyone knows is "Compile once and hope like hell".

Compare Java

1?: Although you could very well just sandbox a process with today's VirtualMemory supporting processors, OpenBSD does this to some extent. 2?: Also, in fact, there has been a long history of security holes in these sandboxes.