> It's a fantastic framework that should and could supplant the JVM.
What makes you feel that .NET is so superior to the JVM? The JVM itself seems like a solid, performant VM platform, and there is a broad selection of languages in Scala, Groovy, Clojure, JRuby, Jython and friends.
Disclaimer: I'm platform agnostic and don't currently develop on the JVM or the .NET CLR, so I have no horse in this race. I'm genuinely curious.
1. JVM cannot do unsafe code. In the CLR, you can create unverifiable IL and do pointer manipulation, etc. Raw memory can be free accessed however you like. That's a handy interop and performance feature.
2. JVM doesn't support structs. Again, performance difference. (Although, sometimes the CLR's JIT hasn't emitted the best code for structs.)
3. The CLR has generics. In Java, generics are implemented via erasure. This has an impact on performance and reflection.
In addition, the JVM is just that--a VM. The platforms that run .NET with a JIT compile the IL down to optimized native code. This is similary to the way many Lisps work. Although the JVM is highly optimized and runs faster than Mono in many tests, it will always have an inherent performance disadvantage.
Ah, things have obviously moved on since I left the Java world years ago. In any event, the VM is still specified at the bytecode level. The JITs are optimizations that are outside of the standard. The .NET ECMA standard specifies an IL that is designed to be JITed to native code.
To the parent question, the performance is very close on the two platforms. The point I was trying to make is that the .NET platform does have some things in it's favor at the IL/VM level.
Visual Studio .Net (huge), C# vs Java (C# has WAY more features), SQL Server integration (if you are using it), IIS is pretty much painless to configure and works really well with .Net, LINQ which is a pretty good ORM.
Funny, I'm currently in a mode of development where I switch daily between Eclipse/Java and Visual Studio / C#, and as far as I'm concerned Eclipse is the best thing Java has going for it. The refactoring and code navigation are miles ahead of what seems to come with Visual Studio. I find myself renaming methods and classes almost indulgently - just to see if I feel better about the name a different way. Having errors instantly highlighted across the whole build tree every time I save is awesome as well. Visual Studio seems quite primitive by comparison in a lot of respects.
My frustrations with Java are much more about the language and how it hasn't really progressed at all in 5 years.
NB: I am using Visual Studio 2008, perhaps 2010 advanced a lot.
It hasn't changed much. some syntactic sugar and influence from functional languages has helped C# but the IDE is not as good as eclipse IMO. You can however add a lot of the refactorings and features from eclipse by using jetbrains ReSharper. (I believe they also make a Java IDE too).
What makes you feel that .NET is so superior to the JVM? The JVM itself seems like a solid, performant VM platform, and there is a broad selection of languages in Scala, Groovy, Clojure, JRuby, Jython and friends.
Disclaimer: I'm platform agnostic and don't currently develop on the JVM or the .NET CLR, so I have no horse in this race. I'm genuinely curious.