"All" programming languages run on x86, so how can they be much different from each other?
BrainfuckBrainfuck and haskellHaskell are both turing completeTuring complete, so they can both do the exact same tasks.
There's a bit of room for syntax changes, syntax sugar and compiler magic in between. You can do quite a lot in there, but there is always a limit. In your case, it's JVM byte code.
If javaJava can produce the same byte code as scalaScala, they are equivalent. It could, however, be the case that a new feature in the JVM gets implemented in only scalaScala. Very unlikely, but possible.