NanoVM is a compact version of the Java virtual machine.
One of NanoVM's main advantages is that it can be easily ported for other targets. Its features include support for standard Java bytecode, complete 15-bit integer arithmetic, garbage collection, and support for inheritance. Additionally, it has a unified stack and heap architecture and requires less than 8kBytes of code memory.
Regarding the AVR microcontroller family, NanoVM has been tested on AVR Mega8 and Mega32 with impressive results. In terms of storage, it requires only 512 Bytes of code storage for Java bytecode (the complete 512 EEPROM bytes available on the AVR ATmega8 CPU) and has 768 Bytes of application RAM available (of the 1k total RAM available on the AVR ATmega8 CPU.) NanoVM can handle about 20k Java opcodes per second on an 8 MHz AVR.
NanoVM also comprises several native classes such as java/lang/Object (object handling), java/lang/System (IO handling), java/io/PrintStream (console output), java/lang/StringBuffer (string processing), and asuro (Asuro control.)
The latest release added significant features such as Nibo robot support, Asuro ATmega168 support, virtual machine source folder cleanup, and new documentation in the form of html class documentation (javadoc). Moreover, the updated install_avr_gcc script installs gcc-4.1.2, GDB=gdb-6.6, avr-libc-1.4.6, and avrdude-5.4 to enhance the experience even further.
Overall, NanoVM is an excellent choice for developers who are looking for a lightweight Java virtual machine with comprehensive features for AVR microcontrollers.
Version 1.6: N/A