According to some analysts, the future is in web services, and in this area J2EE is much more mature than .NET. We have loads of customers running WebSphere, WebLogic, Tomcat, etc, but nobody is doing anything in production yet with .NET. Part of what could be holding .NET back is the lack of confidence in the security of Microsoft platforms.
I’ve been using Java for a few years, and I’ve gotten as far as ‘Hello World’ in C#. It looks good so far, but I’ll need to use it in anger before making a final judgement.
.NET code is “compiled” in the same sense as Java code - the compiler produces bytecode (IL) which is then processed by an interpreter or JIT compiler when you run the program. A good Java runtime with a JIT compiler should perform about as well as the .NET Framework.