There are a number of companies doing embedded Java, i.e. Java on the chip. They range from full Java processors down to picoJava, aka Card Java.
They spoke about "KVM" - stands for Kilo VM - a scaled down version of standard JVM that can run in a few kilobytes of memory. Sun is also devloping "device profiles" - some kind of a standardization in categorizing small devices so that KVMs can be implemented for the entire profile nstead of individual device types. The idea is a KVM written for one device profile should run on ALL devices belonging to that profile, no matter what type of devices are included.
The kVM is really just defines a Java subset, or more accurately, the J2ME configurations and profiles define Java subsets. These ca be implemented either in software or hardware--so the use of a kVM dosn't imply embedded Java.
A kVM is jst a JVM. Just as a single JVM only runs one a single chip/OS combo, so will a kVM. I will likely need two different kVMs for my RIM and my Palm. Code written for a particular J2ME profile will, in theory, run on all devices supporting that profile--assuming you don't use OEM APIs, and the GUI works across the screens of all devices.
For more information, see the J2ME forum.
--Mark
hershey@vaultus.com