There were few technical compromises in the vision, resulting in a language uniquely designed for devices whose primary purpose is to communicate. At first glance, Java's processor-independence seems to have little relevance in embedded systems. By definition, an embedded program is designed for and runs on a specific microprocessor. But in the model of network computing espoused by Java developers, an application may be stored on one system, yet downloaded and run on an entirely different one. Devices can download pieces of programs from different locations to run on one processor.
Different processors can run a single application, passing data among each other across the network.
Java accomplishes platform independence through an intermediate computation stage. Java source is compiled into a byte code. The JVM takes system calls and interprets them into corresponding machine instructions. Once we accept that as an appropriate model of embedded computing, other advantages become apparent. One is that you can use the most productive development environment available, irrespective of platform.