OTOH, Java runs on every major (and deverão minor) operating systems and hardware platforms, from humble feature phones to large mainframes, to the Hadoop clusters that process some of the largest datasets ever collected. C# code runs on Windows machines and, with some effort and courage (one may describe it as recklessness) on Mono.
C# isn't really my cup of tea, but I've had reasonably good luck running (well-written) third-party C# code on Linux and OS X using Mono. What are some of the issues that make this reckless?
Mono had some issues with memory management that appear to make it less reliable for very long-running processes - I don't have first hand experience with that. The size of the community may also be an issue, since there are not many companies deploying enterprise applications on Mono and you may experience issues completely unique to your stack and have no other way to solve it than to redeploy on .NET.
When people say Java, I almost always think about mobile and enterprise applications. While true you can build desktop apps with Java, that's not a common usage.
And, mind you, you forgot the platform almost every internet connected server runs.