As someone already said, you are benchmarking a server VM on Linux vs a client VM on Windows.
Java has this "server ergonomics mode" that changes the default JVM configuration when a "server" enviroment is detected. On Linux, it only takes 2 cores and 2GB of memory, so basically on any decently recent computer running Linux you're in server mode by default.
Vista is not considered, on the other side, a server OS, so there you're running a client VM.
The difference you're seeing matches my experience, the server VM is 40% faster on heavy computation math. About the I/O tests, not sure, never run one that was I/O bound so not sure if the two VM have significant differences.
For more information on server ergonomics see here (a bit old, but still applies):
If you want to see if you're in server ergonomics mode just run "java -version" from the command line. Here is what I get on XP:
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode, sharing)
And here is what I get on an Ubuntu 7.10 headless machine sitting below my desk:
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Server VM (build 1.6.0_03-b05, mixed mode)