Věřte tomu nebo ne, ale existuje projekt, který umožňuje spouštět Java Vitual Machine na Atmel AVR mcu. Člověk se diví co všechno šikovné hlavy nakonec nevymyslí - já bych byl přesvědčen, že něco takového není možné realizovat.

NanoVM
Virtuální stroj má název NanoVM a je možné pro něj psát projekty v Javě v standard Sun JDK. Je jasné, že NanoVM neobsahuje úplně všechny Java příkazy, ale jen jejich dostatečnou podmnožinu. NanoVM zabírá celých 8kB Flash programové paměti ATmega8 a cca 25% SRAM kapacity pro sebe. Pro Java program je k dispozici celá EEPROM.

Současná verze NanoVM pro Asuro zahrnuje:

* Podpora pro standard Java bytekódu
* Testováno na AVR Mega8 a Mega32
* Nastavitelné 15/31 bit celočíselná aritmetika
* Volitelná podpora výpočtů v plovoucí čárce
* Garbage kolektor
* Bootloader pro jednoduché použití uploadu
* Testováno se Sun JDK a Jikes od IBM
* Podporuje dědičnost
* Unified stack a heap architektura (halda)
* Vyžaduje méně než 8kByte kódu paměti
* Nejméně 512 bytů pro uložení java byte kódu
* Nejméně 768 bajtů RAM k dispozici pro použití
* Výkon je cca 20k Java opcodes za sekundu na 8 MHz AVR
* Implementované nativní třídy:
   o java/lang/Object (objekt manipulace)
   o java/lang/System (IO manipulace)
   o java/IO/PrintStream (tisk na konzoli)
   o java/lang/StringBuffer (zpracování řetězců)
   o asuro (asuro kontrola) - tohle patří k dané implementaci, která je na robotu Asuro
   o Nativní podpora pro LCD, AVR io atd.


Blokové schéma běhu programu



Odkazy

Zdrojový kód NanoVM je k nalezení na SourceForge zde.
Domácí stránka projektu NanoVM je k nalezení zde.