There are different vendors who make java compilers; so my question is. Is it possible that a java code compiled by vendor A java compiler will run normally always on vendor B java runtime environment; and if not under what circumstances it will fail.
The Eclipse IDE has its own compiler; the TomcatJSP container uses it to compile JSPs, too. That's by far the most commonly used Java compiler aside from Sun's. The open-source "Jikes", originally an IBM product, is used by some people because it's both fast and good at warning about possible problems that are technically legal code. There are certainly others, but those two are the biggies (I'm not counting GNU gcj, which compiles directly to native code, not to bytecode.)
As far as JVMs go, IBM has one that sees widespread use, and there's also JRockit from BEA. Again, there are others, but those are the big ones.