if WinFX supports Win32 as a subsystem .. then why would the JVM have to make calls through the .NET VM ... or r ur'll worried that eventually Win32 some years from now will be removed from MS's OS?
Until now every new functionality Microsoft introduced was added to Win32. .NET - what we have today - is a layer on top of that. It covers most, but not all Win32 functionality. So, new managed languages like C# programmed against .NET, while older languages like C++ could program against the C based Win32 APIs. The point of .NET (and Java), is to provide an environment where you don't have to worry about a lot of things like memory management, buffer overflows etc... and it also provides built in security and easier deployment models. They also provide a good OO framework as compared to the "flat" C APIs.
With WinFX and Longhorn, ALL new functionality they introduce like WinFS (Storage) and Avalon (GUI), is going to be managed. So what does a language like C++ have to do? There is no unmanaged equivalent. So, it has to go to the managed world (which btw, is possible - they have managed c++). But as you probably can guess, this ruins performance.
There is always some tradeoff. With native C++, you have all the control you want, but you don't get the productivity and safety of a managed environment like Java or .NET. On the other hand, Java and .NET, suffer in performance because of the added additional layer.