Platform independence means that any program should be able to run on any machine where the framework is implemented. This is arguably the case for the Java platform. It was the subject of the original Sun-Microsoft lawsuit: The Microsoft implementation of Java, where Microsoft introduced a number of features which, although useful on Windows, could not be implemented on other systems. (they were Windows specific). It would have been all-right if MS had introduced these as external libraries, but MS put them in their core distribution, with the net result that programs developed for the Microsoft Java platform might not be able to run on other systems. This little incident pushed Microsoft over the edge, and although they had intended to standardise on Java, they developed the .Net framework.
The .Net framework is not platform independent, insofar that a large number of functions in the libraries can only be implemented on Windows. There is a platform independent specification of
.Net[
^] for which Microsoft helpfully publishes freely available source code (affectionately known as the ROTOR distribution).
Miguel de Icaza[
^] used this as base for the MONO distribution (Opinions differ, he says he started with a clean-room approach, but it is highly likely that most of the people in the project had a peek at the ROTOR sources).
To cut a long story short, Java is platform independent, .Net is not, the parts of .Net that microsoft puts in the standard are platform independent, and Mono extends this platform independence, bot not to the whole framework.