NanoVM
# NanoVM

NanoVM ist eine freie Implementierung einer besonders ressourcenschonenden Java Virtual Machine (JVM) für Atmel-AVR-Mikrocontroller (MCU).

Zur eigentlichen virtuellen Maschine gehört auch ein Konvertierungswerkzeug, das der notwendigen Konvertierung von gewöhnlichen Java-Klassendateien für die Verwendung mit der NanoVM dient.

Die NanoVM benötigt in der kleinsten Version nur 8 kByte an Programmspeicher und nur 256 Byte Arbeitsspeicher. Aufgrund der geringen Anforderungen an die Systemressourcen des Wirtssystems gehört die NanoVM zu den kleinsten verfügbaren Java Machines und ist bereits auf einem ATmega8 lauffähig. Es implementiert dazu nur einen Ausschnitt der Programmiersprache Java. Die NanoVM bietet nur die Sprache Java, nicht aber die System-Bibliothek (JDK). Der Einsatz der NanoVM ist auch auf anderen 8-Bit-MCUs der AVR-Reihe möglich. Sie wurde auf die Roboterbausätze Nibo und NIBObee portiert, die auch offiziell unterstützt werden. Andere Mikrocontroller als die AVR-Controller werden bisher nicht offiziell unterstützt. NanoVM ist für den Einsatz von kleinen eingebetteten Systemen bestens geeignet, die damit per Java-Bytecode gesteuert werden können.

Die Universität Duisburg-Essen setzte die JVM z. B. beim c’t Bot, einem Roboter-Projekt der Computerzeitschrift c’t, ein. Das Projekt ASURO war der erste Roboter, der NanoVM einsetzte.

Die Version 1.1 wurde im September 2005 veröffentlicht, die aktuelle Version 1.6 vom 8. Juli 2007.

## Implementierte Java-Klassen

In NanoVM sind folgende Java-Klassen implementiert:

* java/lang/Object
* java/lang/System
* java/io/PrintStream
* java/lang/StringBuffer
