While the Microsoft Java Virtual Machine can run "almost" any 100% pure
Java classes, the other way
is not true, non-MS JVM are not able to run classes that used Microsoft-specific
classes (com.ms.*).
Check this How-to for some techniques to
detect Virtual machine in use.