Read an interview with James Gosling today. Again a technical interview with lot's of marketing pro Java and against .NET. He complained that:
"The Microsoft folks made a big deal of being able to support C and C++ on the CLR, and that, to my mind, is one of the stupidest, most offensive things they could have done. What it meant was that they had to have a Virtual Machine model that would allow arbitrary pointer arithmetic, and sort of arbitrary forging of the identity of things.".
So what's his problem? People have to use code and components written in other (maybe insecure) languages if they need in both technologies. Java has JNI and you can interface with insecure code with it as well. .NET makes it just easier than JNI and is able to support more languages. Unfortunately the .NET runtime is not (yet) a friendly environment for dynamic languages like Smalltalk.