Hard to say, really. On the one hand, Java will dependably let you know if you access an array out of bounds, on the other hand, a vector is really a wrapper for an array (so operator calls an actual function, unless it can be inlined).
We should modify that to say "Some of my Java solutions are faster than a lot of C/C++ solutions." The other thing that kicks Java on SPOJ is that .25 seconds of JVM startup time, especially for 1-second problems. And I'll take this opportunity (again) to ask the problemsetter for PLHOP, if he's reading, to up the time limit to 2 seconds :-)