Well, I mean, if multiplatform solutions are truly inferior—both when it comes to raw speed and how efficiently they utilize hardware resources—then why even bother discussing them at all? In that case, they just aren't worth our attention. It seems like everyone would be better off simply choosing a non-multiplatform solution that actually works fast and provides higher quality than those multiplatform options.
I suppose if I were looking for some sort of primitive reasoning regarding all of this, then your answer would have completely satisfied me...
However, if one were searching for some actual intelligent thought on the subject, it would be difficult to succeed. Because, I guess, you would also have to consider the fact that most companies already rely on multiplatform solutions. It wouldn't make any sense for them to switch over to Windows because they would likely face bankruptcy... since, as far as anyone knows, those massive Microsoft licenses are certainly not cheap...
The second thing is that DotNet is a relatively new technology. Therefore, it becomes incredibly expensive if a company has to pay for retraining their staff who currently work in Java, not to mention the cost of the tools, which adds a bit more wealth to the equation, I suppose...
The third thing is that a single platform doesn't really exist. If a company ties itself to just one platform, they might end up going broke... and by platform, I don't just mean software SKU... because if you aren't careful, things move into 64-bit mode, and suddenly a company buys DotNet licenses for 32-bit, only to find that in three years they have to buy all those licenses again for a 64-bit solution... whereas, I think, you can just use Java on all kinds of solutions...