[java] How is Java platform-independent when it needs a JVM to run?