What happens if you program Java is this:
You write Java Code (universal code = for any platform)
The Compiler makes from it Java Bytecode (Comparible with assembly with c/c++)
The platform specific layer runs the Java bytecode.
Knowledge of bytecode may be handy for debugging or for making fast programs (know how the underlaying part works best, so your solution easily links to the layer underneath)