Java is platform independent because you can take byte code compiled on one platform and run it in a compatible JVM on some other platform. Given a new platform, you can't run Java at all until somebody writes a JVM so I wouldn't count on running on a TRS80 real soon.
It's easy to write code that breaks out of the JVM with JNI or exec() or even line-end schemes. And some JVMs have subtle differences in behavior. These things mean there is code that won't run on every JVM & platform combination.
Does that line up with your question?
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi