For example, perhaps a product that has been deployed needs a next-generation microprocessor upgrade. For both cost and customer satisfaction reasons, manufacturers will need to ensure that this upgrade does not obsolete the software that runs above it. While technologies have been widely adopted as key technologies for Internet applications on general-purpose computers, their benefits are just now being realized for the embedded systems market. In particular, general-purpose computer versions of the Java programming language require several megabytes of storage space, space an embedded device can not afford. In addition, many current implementations of supporting application runtimes have performance characteristics such as batch garbage collection that interfere with the smooth operation of small devices.
Embedded systems can benefit from the software platform independence of a virtual machine.
The virtual machine promises the flexibility to write software that will run on different processors, unchanged. It also offers a safe execution environment required by devices that will accept new versions of software from the public Internet. Using the Java programming language, embedded systems developers can achieve productivity increases because of the language's strong type-checking, automatic memory management, simple yet elegant object orientation, and standard class libraries. In order to appropriately apply the Java programming language to the embedded systems world, it must be tailored to this world's unique requirements. For example, the size of the virtual machine and its class libraries must be reduced by providing only those required by the application.