I think it's fair to say something like the following:
* The J++ extensions to Java (delegates, events) were on the list of .NET
runtime features.
* J# was built on top of the .NET runtime, using ideas but probably little
code from J++
* J# was intended as an upgrade path for J++ users, so some attention was
paid to backward compatibility, but it wasn't completely compatible
C#, .Net and the related languages and tools make a lot of sense in Microsoft
terms, if you're coming up from, say, a Visual Studio background.
I can't speak for MS, but I tried J++ a little bit when it came out, and I've
read white papers here and there, and I've spent a little reading time on C#
and .Net, though I've never used them. .Net and the CLR are what something
like what anything "JVM-like" would have to be in order to be of use in the
Microsoft universe.
Part of the falling out between Java (Sun) and J++/C# (MS) was a language
philosophy holy war. Delegates and later first-class functions are a handy
distinction, but the Java folks thought them too heavy and redundant given the
then-recent introduction of nested types which did the job of delegates
without a whole new mechanism, just classes and interfaces.
Unfortunately for Java, things like first-class functions, primitive objects
('int' with properties and methods) are popular with programmers and are
useful to many. They don't seem to have harmed the MS world much, nor have
unmanaged code and some other things, but then C# is designed for a particular
environment. Java on purpose is leaner, easier to port between platforms and
devoid of certain goodies.