Microsoft thought Java was a good idea in that they liked the JVM a lot, but the language itself they saw as flawed and missing key features that would make it a truly modern language, in particular they heavily disagreed with Sun's approach to FFI (foreign function interface) [Java's slow, laborious efforts eventually building JNI, the Java Native Interface], because of their many years of experience for better and worse with COM (component object model).
J++ was never meant to be "Java", and never technically was even in branding, it was essentially a second language (that Microsoft saw at the time as C++ is to C, it was to Java, and that's very clearly represented in that brand name) that also targeted the Microsoft version of the JVM, and used a couple Microsoft-specific escape hatches for FFI and COM.
(So it absolutely was an "embrace and extend", but it wasn't of the Java language itself so much as it was the JVM that Microsoft wanted to embrace and extend that seemed to fright Sun so badly. That's probably why so much of the legal drama and the consequent blows to the rest of the Java ecosystem at the time was Sun withdrawing JVM licenses from just about everyone as a part of that battle. Originally Sun seemed rather happy licensing the JVM to whoever wanted to implement it, which is why Microsoft had a JVM in the first place, thinking controlling the Java language was enough. Sun worked to put that genie back in the bottle and move everyone back to mostly a single JVM again. There's no lack of irony in the exact same battle playing out between Oracle and Google decades later in the battle of Dalvik [Google's JVM] and Android.)
It wasn't that Sun didn't want Microsoft using Java, they didn't want Microsoft using the JVM any longer, and without a license to build their own JVM, J++ wouldn't run on any other JVM and wasn't a useful language.
When Microsoft lost their JVM they decided to start from scratch, moved the J++ team (including and particularly Anders Hejlsberg, C# lead) to a new VM that they could control from top to bottom (including its FFI mechanics), and much of what had directly been the J++ team used what they learned from the whole mess to create C#.
Isn't that a back backwards? Isn't it more like: Microsoft wanted a more modern language and they weren't allowed to use Java so they created c#?
Microsoft thought Java was a good idea in that they liked the JVM a lot, but the language itself they saw as flawed and missing key features that would make it a truly modern language, in particular they heavily disagreed with Sun's approach to FFI (foreign function interface) [Java's slow, laborious efforts eventually building JNI, the Java Native Interface], because of their many years of experience for better and worse with COM (component object model).
J++ was never meant to be "Java", and never technically was even in branding, it was essentially a second language (that Microsoft saw at the time as C++ is to C, it was to Java, and that's very clearly represented in that brand name) that also targeted the Microsoft version of the JVM, and used a couple Microsoft-specific escape hatches for FFI and COM.
(So it absolutely was an "embrace and extend", but it wasn't of the Java language itself so much as it was the JVM that Microsoft wanted to embrace and extend that seemed to fright Sun so badly. That's probably why so much of the legal drama and the consequent blows to the rest of the Java ecosystem at the time was Sun withdrawing JVM licenses from just about everyone as a part of that battle. Originally Sun seemed rather happy licensing the JVM to whoever wanted to implement it, which is why Microsoft had a JVM in the first place, thinking controlling the Java language was enough. Sun worked to put that genie back in the bottle and move everyone back to mostly a single JVM again. There's no lack of irony in the exact same battle playing out between Oracle and Google decades later in the battle of Dalvik [Google's JVM] and Android.)
It wasn't that Sun didn't want Microsoft using Java, they didn't want Microsoft using the JVM any longer, and without a license to build their own JVM, J++ wouldn't run on any other JVM and wasn't a useful language.
When Microsoft lost their JVM they decided to start from scratch, moved the J++ team (including and particularly Anders Hejlsberg, C# lead) to a new VM that they could control from top to bottom (including its FFI mechanics), and much of what had directly been the J++ team used what they learned from the whole mess to create C#.