NanoVM is an open-source implementation of the Java virtual machine. The NanoVM was initially developed to run on the Atmel AVR ATmega8 used in the Asuro Robot. It was ported to run on the C't-Bot and the Nibo-robot and can easily be ported to other AVR-based systems.
The virtual machine uses almost 8 kilobytes of code memory (entire flash in case of ATmega8) and 256 bytes of RAM. Every user's .class are processed by NanoVM's Converter which transforms it into one bytecode file. Special tools next send this file through serial line into device. For this operation is useful NanoVM's bootloader (alternatively you can use ISP programmer like: PonyProg) which store this content on-chip EEPROM.