<p>I'm new to .Net and I'm trying to understand the basics first. What is the difference between MSIL and Java bytecode?</p>

There are not that much differences. Both are intermediate formats of the code you wrote. When executed, the Virtual machines will execute the intermediate language managed that means that the Virtual Machine controls the variables and calls. There is even a language which I don't remeber right now that can run at .Net and Java the same way.
Basicly, it's just another format for the same thing
Edit: Found the language (besides Scala): It's FAN (
http://www.fandev.org/
), looks very interesting, but no time yet to evaluate