Hello,
If performance is not critical you could use Sun's CVM. It supports the complete JVM Spec, and the CDC/Foundation stack that comes with it is fairly complete (not 100% compatible with J2SE though). CVM supports also the std protocols for debugging and profiling.
It doesn't have a JIT for x86 though, so you could find it not fast enough. It should be faster than KVM. OTOH it sure will fit in 20MB.
There are other interesting embedded Java offerings from IBM (J9 VM), NewMonics and Esmertec. On the open-source side, I'd recommend looking at Acunia's Wonka, jamvm, sablevm and kaffe (google will point you to them easily). I don't know the footprint of those; the main differenciators are the availability of a JIT, and the certification of the VM (only done on commercial products so far AFAIK).
Eric
---------------------------------------- firstname dot lastname at jaluna dot com