What about Ruby, Iron Python, F# and Boo? (perhaps Nermle). I'm not a python fan myself, i think its a bastian of bad practice + un-managable code, the better features of which can truely be leveraged in true functional languages.
We comparing the language, or the runtime environment? Frankly i've yet to see one language reason to choose Java over C#... They blatently copied every idea that was good. As far as the language goes, the licensing of C# is much better, far more friendly, than that of Java.
Erm every thing thats an ECMA standard can be implemetned by others. The ECMA standards often fall slightly behind the developement in been ratified, but they're in draft status. Lets not confuse the framework, with the CLR, or the Language C# now.
The framework from the start is not designed to be cross platform. There is no claim that winforms will run on anything non windowsie. The framework isn't a standard. When i write apps for work, i have total control over the deployment OS, so i will use a framework that fully leverages it (This imo is java's failing, you end up with a 'only featurse that i can do on every platform' problem. Which leads to horrible apps). If you want the feature poor cross platform libraries, there are solutions which funnily enough are non-microsoft. MS don't try to kill them with law suites, only by not having them supported in the VS tools. Theres no reason not know about all of them.
Same way Sun promised not even 2 years ago to GPL java? .Net had only been an ECMA standard for oh, about 6 years before that. Yes, MS are pure evil, compared to the sunshine lolly pops and rainbows of sun.
And obviously they are the only company who do this. Its not as if Apple, Dell (alienware one that hit the fan a while back) etc all try and manipulate the media?
Me, i'm kind of a programming whore, i'll try everything, and generally try to not tie myself down, you never know when you might miss the boat (as plenty of COBOL people did). If you choose to ignore a platform for reasons that stink of ill informed, and, i can't think of a way of saying un-balanced peducie (ie, the sun shines out of the arse of one, whilst the other is drowning puppies). Then you sir, will come unstuck very quickly next time theres an adjustment in software paradigms (as i've been banging on about on this forum a lot lately, i think its goign to be a major shift to functional, immutable variable friendly, stateless programming, very parallisation friendly).
So in short, this is really quite old news, you can ignore it if you wish, but do so at your peril, its not as if their giving you drugs which have a phsycial dependance develope. The only way you'd keep using them is if you thought they where better than anything else.
Before you ask, i do about 70% of my work in C# 3.5, running on only windows hardware and x64 kit. About 10% in Java (only when i have too, really looking to reduce this, as it just takes longer to develope + performance is worse for the style we've embraced (see generics + boxing).
I don't work for MS, or recive money in any way shape or form, i work for small hedge fund, where i have a lot of liberty in which technologies to use, as long as i don't mind taking the flack if it fails. As such i wouldn't even contemplate taking a pittfuly few quid back hander.