nb. The designers weren't stupid, they designed AES-256 to completely lose the key and this attack doesn't work against all twelve rounds of AES-256. The surprise is that somebody managed to extract the key out of a ten round version. This was unexpected.
Small correction; 14 rounds are specified in the AES-256 standard, not 12.
http://en.wikipedia.org/wiki/AES-256
Or more constructively you could avoid dogmatic thinking like what you described, and arrive at a logical conclusion based on the facts. Java has serious portability problems of it's own (not claiming that's the solution you are referring to). Even beyond the write once debug everywhere debacle, I am told JVMs on certain platforms have such performance problems as to make them unusable for many tasks.
My point is simply that no language will ever be completely interoperable, stable or secure. Based on wide consensus though, I think it is pretty well accepted that C#/.NET is one of the best thought out and implemented managed languages that exist today. Of course if interoperability is your primary concern then C# isn't your language of choice, but there are many other criteria you are ignoring.
A bug in the code is worth two in the documentation.