The situation with Java is even stronger than "MS just realized": MS was /forced/. Back then, MS thought Java was great, but looked at it as a language and execution engine as opposed to a dream about "write once, run everywhere", and so released J++, allowing developers of Java applications to use a replacement toolkit that bound to native Win32 widgets. This caused them to get sued, and the result of the case was that they lost their license to Java. J++ 1.1 seriously came with a dialog when you ran it apologizing that they were legally required to stop distributing the application, and that you should look into alternatives. Thus, .NET was born.